CRUD

mangojang·2021년 12월 28일
0
post-thumbnail

본 글은 글쓴이가 꺼내보기 위함의 목적이 큰 글입니다 :)

1. create

save()

        CustomerSchema.statics = {
        	addCustomer: function (data){ //data 는 json 형태 schema와 동일한 구조
        			const customer = new this(data); // statics의 this 는 model
        			return customer.save();
        	}
        }

2. read

find()

  • 조건에 해당하는 모든 데이타를 반환함. (복수)
         model.find({조건}).exec(콜백함수);
        
        //exec 콜백함수 형태
        (err,result)=>{
        .....
        }
        // exec() 안에 없으면 콜백함수 스킵 
        
        function (name){
        	return this.find({username:name}).exec(); // this는 model 
        }

findOne()

  • 조건에 해당하는 데이타 하나를 반환함. (단수)
        model.findOne({조건}).exec(콜백함수);

3. update

update()

  • 기본적으로 옵션 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();// 결과값 복수

findOneAndUpdate()

  • 도큐먼트 바꾸고 바뀐 도큐먼트를 반환함.
        model.findOneAndUpdate({찾을 조건},{수정할 조건}).exec(); 
        
        model.findOneAndUpdate({찾을 조건},{$set:{수정할 조건}}).exec(); //set - 수정 
        model.findOneAndUpdate({찾을 조건},{$push:{수정할 조건}}).exec(); //push - 추가 

4. delete

deleteOne()

  • 해당 조건의 해당되는 하나의 도큐먼트만 지움. (단수)
  • 도큐먼트 지우고 끝
        model.deleteOne({찾을조건}).exec();

deleteMany()

  • 해당 조건의 해당되는 모든 도큐먼트를 지움. (복수)
  • 도큐먼트 지우고 끝
        model.deleteMany({찾을조건}).exec();

findOneAndDelete()

  • 해당 조건의 해당되는 하나의 도큐먼트만 지움. (단수)
  • 도큐먼트 지우고 지운 도큐먼트 반환함.
        model.findOneAndDelete({찾을조건}).exec();

참고문헌

https://blog.ull.im/engineering/2019/03/08/update-on-mongodb-and-mongoose.html

https://velog.io/@yejineee/Mongoose-Atomic-Update-방식을-찾아서

https://webduck.tistory.com/56

https://poiemaweb.com/mongoose

profile
한 걸음 한 걸음 계속 걷는 자가 일류다

0개의 댓글