mongoose 상용 조작 방법

9153 단어 nodeJs
Mongoose 가 뭐 예요?일반적으로 저 희 는 MongoDB 의 함수 로 MongoDB 데이터 베 이 스 를 조작 하지 않 습 니 다.
Mongose 는 MongoDB 데이터 베 이 스 를 조작 하 는 인터페이스 이다.
Schema 는 파일 형식 으로 저 장 된 데이터베이스 모델 골격 으로 데이터베이스 엔 드 로 직접 연결 할 수 없다. 즉, 데이터 베이스 에 대한 조작 능력 이 없다 는 것 이다. 데이터 속성 모델 (전통 적 의미 의 표 구조) 또는 '집합' 모델 골격 이 라 고 할 수 있다.
/*      Schema */
var mongoose = require("mongoose");


var TestSchema = new mongoose.Schema({
    name : { type:String },//  name,   String
    age  : { type:Number, default:0 },//  age,   Number,   0
    time : { type:Date, default:Date.now },
    email: { type:String,default:''},
    id: {type: Schema.Types.ObjectId}//  ,     
});
위 에 있 는 이 TestSchema 는 4 개의 속성 을 포함 합 니 다 [name, age, time, email]
Model
Schema 구조 로 생 성 된 모델 은 Schema 가 정의 한 데이터 베이스 골격 을 제외 하고 데이터 베 이 스 를 조작 하 는 행위 도 가지 고 있 으 며 데이터 베이스 속성, 행 위 를 관리 하 는 것 과 유사 하 다.
var db = mongoose.connect("mongodb://127.0.0.1:27017/test");
//   Model
var TestModel = db.model("test1", TestSchema);
test1          ,       .

Entity 는 Model 에서 만 든 실체 로 save 방법 으로 데 이 터 를 저장 합 니 다. Model 과 Entity 는 데이터 베이스 작업 에 영향 을 줄 수 있 지만 Model 은 Entity 보다 더욱 조작 성 이 있 습 니 다.
var TestEntity = new TestModel({
       name : "Lenka",
       age  : 36,
       email: "[email protected]"
});
console.log(TestEntity.name); // Lenka
console.log(TestEntity.age); // 36
var TestEntity = new TestModel({
       name : "Lenka",
       age  : 36,
       email: "[email protected]"
});
console.log(TestEntity.name); // Lenka
console.log(TestEntity.age); // 36
커서
MongoDB 는 커서 를 사용 하여 find 의 실행 결 과 를 되 돌려 줍 니 다. 클 라 이언 트 는 커서 의 실현 에 대해 최종 결 과 를 효과적으로 제어 할 수 있 습 니 다.결과 의 수량 을 제한 하고 일부 결 과 를 생략 할 수 있 으 며 임 의 키 에 따라 임 의 순서 로 조합 하여 결 과 를 각종 정렬 하거나 다른 강 한 조작 을 수행 할 수 있다.
ObjectId
mongodb 집합 에 저 장 된 모든 문서 (document) 에는 기본 키 가 있 습 니 다id, 이 키 이름 은 고정 되 어 있 습 니 다. mongodb 가 지원 하 는 모든 데이터 형식 일 수 있 습 니 다. 기본 값 은 ObjectId 입 니 다.
ObjectId = Schema.Types.ObjectId;
ObjectId 는 12 바이트 의 BSON 형식 문자열 입 니 다.바이트 순서에 따라 순서대로 대표 합 니 다.
4 바이트: 유 닉 스 타임 스탬프
3 바이트: MongoDB 를 실행 하 는 기계
2 바이트: 이 생 성 을 나타 낸다id 프로 세 스
3 바이트: 난수 로 시 작 된 카운터 에서 생 성 된 값
Node. js 중
package. json 에 "mongoose": "*" 필드 추가
npm 설치 의존.
var mongoose = require("mongoose");
var db = mongoose.connect("mongodb://localhost:27017/test");
    

API
var mongoose = require("mongoose");
var db = mongoose.connect("mongodb://localhost:27017/test");

db - 데이터베이스 조작 1. 데이터베이스 연결 이벤트 연결, 매개 변수 1: error 일 수도 있 습 니 다.
db.connection.on(‘open’, callback);

Schema - 표 구조
1. 구조 함수
 new mongoose.Schema( { name:{type:String}, age:{type:Number, default:10}  } )
2. 속성 추가
 Schema.add( { name: ‘String’, email: ‘String’, age: ‘Number’ } )
3. 가끔 Schema 는 뒤의 Model 과 Entity 에 공공 속성 을 제공 해 야 할 뿐만 아니 라 공공 적 인 방법 도 제공 해 야 한다.
 Schema.method( ‘say’, function(){console.log(‘hello’);} )
/ / 그러면 Model 과 Entity 의 인 스 턴 스 가 이 방법 을 사용 할 수 있 습 니 다.
4. 정적 방법 추가
 Schema.static( ‘say’, function(){console.log(‘hello’);} )
/ / 정적 방법, Model 층 에서 만 사용 가능
5. 추가 방법
 Schema.methods.say = function(){console.log(‘hello’);};
/ / 정적 방법, Model 층 에서 만 사용 가능
\ # \ # \ # model - 문서 조작
1. 구조 함수, 매개 변수 1: 집합 이름, 매개 변수 2: Schema 인 스 턴 스
 db.model(“test1”, TestSchema );
2. 조회, 파라미터 1 무시 또는 빈 대상 이면 모든 집합 문 서 를 되 돌려 줍 니 다.
 model.find({}, callback);
 model.find({},field,callback);
필터 조회, 인자 2: {'name': 1, 'age': 0} 조회 문서 의 반환 결 과 는 name 을 포함 하고 age 는 포함 되 지 않 습 니 다. ( id 기본 값 은 1)
 model.find({},null,{limit:20});
필터 조회, 파라미터 3: 커서 조작 limit 제한 반환 결과 수량 은 20 개 이 며, 20 개 미 만 이면 모든 것 을 되 돌려 줍 니 다.
 model.findOne({}, callback);
찾 은 첫 번 째 문 서 를 조회 합 니 다.
 model.findById(‘obj._id’, callback);
검색 에서 찾 은 첫 번 째 문 서 는 위 와 같 습 니 다. 하지만 id 의 값 조회 만 받 습 니 다.
3. 집합 에 문 서 를 만 듭 니 다.
 Model. create (문서 데이터, 콜백)
4. 업데이트, 매개 변수 1: 조회 조건, 매개 변수 2: 업데이트 대상, MondoDB 업데이트 수정 기 를 사용 할 수 있 습 니 다.
 Model.update(conditions, update, function(error)
5. 삭제, 매개 변수 1: 조회 조건
 Model.remove(conditions,callback);
\ # \ # \ # Entity - 문서 조작
1. 구조 함수, 사실은 model 의 인 스 턴 스
 new TestModel( { name:‘xueyou’, age:21 } );
2. 집합 에서 문 서 를 만 듭 니 다.
 Entity.save(callback);
수정 기 및 업데이트 기
수정 기 업데이트:
'$inc' 증감 수정 기 는 숫자 에 만 유효 합 니 다. 다음 인 스 턴 스: age = 22 문 서 를 찾 으 면 문 서 를 수정 하 는 age 값 이 1 증가 합 니 다.
 Model.update({‘age’:22}, {’$inc’:{‘age’:1} }  );
실행 후: age = 23
'$set' 키 의 값 을 지정 합 니 다. 이 키 는 존재 하지 않 으 면 만 듭 니 다. MondoDB 가 지원 하 는 형식 일 수 있 습 니 다.
 Model.update({‘age’:22}, {’$set’:{‘age’:‘haha’} }  );
실행 후: age = 'haha'
'$unset' 키 를 삭제 합 니 다.
 Model.update({‘age’:22}, {’$unset’:{‘age’:‘haha’} }  );
실행 후: age 키 가 존재 하지 않 습 니 다
배열 수정 기:
'$push' 키 push 에 배열 구성원 을 주 고 키 가 존재 하지 않 으 면 생 성 됩 니 다.
 Model.update({‘age’:22}, {’$push’:{‘array’:10} }  );
실행 후: array 키 를 추가 합 니 다. 형식 은 배열 이 고 한 멤버 가 10 입 니 다.
'$addToSet' 은 배열 에 요 소 를 추가 합 니 다. 존재 하면 추가 하지 않 습 니 다.
 Model.update({‘age’:22}, {’$addToSet’:{‘array’:10} }  );
실행 후: array 에 10 이 있 기 때문에 추가 하지 않 습 니 다.
'$each' 는 배열 을 옮 겨 다 니 며 $push 수정 기와 함께 여러 값 을 삽입 할 수 있 습 니 다.
 Model.update({‘age’:22}, {’$push’:{‘array’:{’$each’: [1,2,3,4,5]}} }  );
실행 후: array: [10, 1, 2, 3, 4, 5]
'$pop' 은 배열 의 끝 에 요 소 를 삭제 합 니 다.
 Model.update({‘age’:22}, {’$pop’:{‘array’:1} }  );
실행 후: array: [10, 1, 2, 3, 4] tips: 1 을 - 1 로 바 꾸 면 배열 의 첫 번 째 요 소 를 삭제 할 수 있 습 니 다.
'$pull' 은 배열 에서 지정 한 요 소 를 삭제 합 니 다.
 Model.update({‘age’:22}, {’$pull’:{‘array’:10} }  );
실행 후: array: [1, 2, 3, 4] array 에 일치 하 는 10 을 삭제 합 니 다.
\ # \ # \ # 조건 조회:
“$lt”
... 보다 작다
“$lte”
이하
“$gt”
... 보다 크다
“$gte”
... 보다 크다
“$ne”
같 지 않다
 Model.find({“age”:{ “$get”:18 , “$lte”:30 } } );
검색 age 는 18 보다 크 고 30 보다 작은 문서 입 니 다.
또는 조회 OR:
'$in' 키 하나 에 여러 개의 값 이 대응 합 니 다.
'$nin' 은 위 에서 거꾸로 가 져 옵 니 다. 한 키 는 지정 한 값 에 대응 하지 않 습 니 다.
"$or" 여러 조건 이 일치 합 니 다. $in 을 삽입 하여 사용 할 수 있 습 니 다.
“$not”
위 에서 반대로 특정 패턴 과 일치 하지 않 는 문 서 를 조회 합 니 다.
 Model.find({“age”:{ “$in”:[20,21,22.‘haha’]} } );
age 는 20 또는 21 또는 21 또는 haha 와 같은 문 서 를 조회 합 니 다.
 Model.find({"$or" :  [ {‘age’:18} , {‘name’:‘xueyou’} ] });
검색 age 는 18 이나 name 이 'xueyou' 와 같은 문서 입 니 다.
형식 조회:
null 은 자신 과 존재 하지 않 는 값 을 일치 시 킬 수 있 습 니 다. 키 와 일치 하려 면 null 을 통과 해 야 합 니 다. "$exists" 조건 판정 키 가 이미 존재 합 니 다.
"$exists" (존재 여 부 를 나타 내 는 뜻)
 Model.find(“age” :  { “$in” : [null] , “exists” : true  } );
age 값 이 null 인 문 서 를 조회 합 니 다.
Model.find({name: {$exists: true}},function(error,docs){
  //name 속성 이 존재 하 는 모든 문 서 를 조회 합 니 다.
});
Model.find({telephone: {$exists: false}},function(error,docs){
  //telephone 속성 이 존재 하지 않 는 모든 문 서 를 조회 합 니 다.
});
정규 표현 식:
MongoDb 는 정규 표현 식 과 호 환 되 는 정규 표현 식 라 이브 러 리 를 사용 합 니 다.
 find( {“name” : /joe/i } )
name 이 joe 인 문 서 를 조회 하고 대소 문 자 를 무시 합 니 다.
 find( {“name” : /joe?/i } )
다양한 대소 문자 조합 과 일치 하 는 검색
조회 배열:
 Model.find({“array”:10} );
array (배열 형식) 키 에 10 개의 문 서 를 조회 합 니 다. array : [1,2,3,4,5,10]  일치 합 니 다
 Model.find({“array[5]”:10} );
array (배열 형식) 키 의 아래 표 시 된 5 에 대응 하 는 값 은 10 입 니 다. array : [1,2,3,4,5,10]  일치 합 니 다
'$all' 은 배열 의 여러 요소 와 일치 합 니 다.
 Model.find({“array”:[5,10]} );
일치 하 는 array 배열 에 5 와 10 이 있 는 문 서 를 조회 합 니 다.
'$size' 배열 길이 일치
 Model.find({“array”:{"$size" : 3} } );
일치 하 는 array 배열 길이 가 3 인 문 서 를 조회 합 니 다.
'$slice' 쿼 리 서브 집합 되 돌려 주기
 Model.find({“array”:{"$skice" : 10} } );
array 배열 과 일치 하 는 10 개의 요 소 를 조회 합 니 다.
 Model.find({“array”:{"$skice" : [5,10] } } );
array 배열 과 일치 하 는 다섯 번 째 부터 열 번 째 요 소 를 조회 합 니 다.
### where
이 를 사용 하면 임의의 javacript 문 구 를 조회 의 일부분 으로 실행 할 수 있 습 니 다. 리 셋 함수 가 true 문 서 를 되 돌려 주면 결과 의 일부분 으로 되 돌려 줍 니 다.
find( {"$where" : function(){
for( var x in this ){
/ / 이 함수 의 this 가 문서 입 니 다.
}
if(this.x !== null && this.y !== null){
   return this.x + this.y === 10 ? true : false;
}else{
   return true;
}
}  }  )
버 전 간소화
find( {"$where" :  "this.x + this.y === 10" } )
find( {"$where" : " function(){ return this.x + this.y ===10; } " } )
\ # \ # \ # 커서:
limit(3)
결과 반환 수량 제한,
skip(3)
앞의 세 문 서 를 건 너 뛰 고 나머지 문 서 를 되 돌려 줍 니 다.
sort( {“username”:1 , “age”:-1 } )
정렬 키 는 문서 의 키 이름 에 대응 하고 값 은 정렬 방향, 1 오름차, - 1 내림차 순 을 나타 낸다.
\ # \ # # 주의:
1. 데이터 베 이 스 를 조작 하여 결 과 를 되 돌려 야 res. send () 작업 을 할 수 있 습 니 다. 그렇지 않 으 면 send () 후 데이터 베 이 스 를 종료 합 니 다.

좋은 웹페이지 즐겨찾기