본 글은 글쓴이가 꺼내보기 위함의 목적이 큰 글입니다 :)
CustomerSchema.statics = {
addCustomer: function (data){ //data 는 json 형태 schema와 동일한 구조
const customer = new this(data); // statics의 this 는 model
return customer.save();
}
}
model.find({조건}).exec(콜백함수);
//exec 콜백함수 형태
(err,result)=>{
.....
}
// exec() 안에 없으면 콜백함수 스킵
function (name){
return this.find({username:name}).exec(); // this는 model
}
model.findOne({조건}).exec(콜백함수);
기본적으로 옵션 multi: true, 찾을조건에 해당하는건 모두 다 바꿔줌. (복수)
options
1. upsert : boolean
2. multi: boolean
3. writeConcern: docuemnt
4. collation: document
mongoose는 수정할 조건에 앞에 $set을 안붙여도 자동으로 그 부분만 바꿔줌. (mongoose에서는 $set 붙이나 안붙이나 똑같음.)
mongoDB는 앞에 $set 안 붙이면 해당 도큐먼트의 다른 필드 다 날려버리고 수정한 필드만 남아 있음.
도큐먼트 바꾸고 끝.
model.update({찾을 조건},{수정할 조건}).exec();
model.update({찾을 조건},{수정할 조건},{옵션설정}).exec();
model.update({찾을 조건},{$set:{수정할 조건}}).exec();
model.update({찾을 조건},{$push:{수정할 조건}}).exec(); //push - 추가
model.updateOne({찾을 조건},{수정할 조건}).exec(); // 결과값 단수
model.updateMany({찾을 조건},{수정할 조건}).exec();// 결과값 복수
model.findOneAndUpdate({찾을 조건},{수정할 조건}).exec();
model.findOneAndUpdate({찾을 조건},{$set:{수정할 조건}}).exec(); //set - 수정
model.findOneAndUpdate({찾을 조건},{$push:{수정할 조건}}).exec(); //push - 추가
model.deleteOne({찾을조건}).exec();
model.deleteMany({찾을조건}).exec();
model.findOneAndDelete({찾을조건}).exec();
https://blog.ull.im/engineering/2019/03/08/update-on-mongodb-and-mongoose.html
https://velog.io/@yejineee/Mongoose-Atomic-Update-방식을-찾아서