복붙노트

[MONGODB] findOneAndUpdate에서 반환하는 필드를 선택 몽구스

MONGODB

findOneAndUpdate에서 반환하는 필드를 선택 몽구스

Nodejs에 몽구스를 사용하여 찾을를 사용하여 일부 필드를 반환 할 수 있습니다. 예를 들면.

User.findOne({_id:'132324'}, {first_name:1, last_name:1}).exec...

하지만 난 findOneAndUpdate를 사용하여 특정 필드를 반환하는 방법을 알아낼 수 없습니다.

User.findOneAndUpdate({_id:'132324'}, {$set : {..bla bla}}, {first_name:1, last_name:1}).exec....

사람이 전에를 달성 했습니까? 나는 문서에서 찾을 수 없습니다.

해결법

  1. ==============================

    1.등이 적용된다 "upsert"과 "새로운"와 같은 기타 세부 사항을 있기 때문에 수동에서 옵션 인수는에서 "필드"키가 필요합니다. 귀하의 경우에 당신은 또한 "새로운"옵션을 원하는 :

    등이 적용된다 "upsert"과 "새로운"와 같은 기타 세부 사항을 있기 때문에 수동에서 옵션 인수는에서 "필드"키가 필요합니다. 귀하의 경우에 당신은 또한 "새로운"옵션을 원하는 :

    User.findOneAndUpdate(
      { "_id": "132324" },
      { "$set": { "hair_color": "yellow" } },
      {
       "fields": { "first_name":1, "last_name": 1 },
       "new": true 
      }
    ).exec(...)
    

    다른 방법으로 당신은) (ALL 기타 사항 서보 -OFF 사용할 수 있습니다

    User.select({ "first_name": 1, "last_name": 1 }).findOneAndUpdate(
      { "_id": "132324" },
      { "$set": { "hair_color": "yellow" } },
      { "new": true }
    ).exec(...)
    

    "새로운"없는 것을주의 : 업데이트의 수정이 처리되기 전에 실제 문서가 반환하는 상태에있다. 일부 시간이 당신이 무엇을 의미하지만, 대부분의 시간은 정말 수정 된 문서를 원한다.

  2. ==============================

    2.MongoDB를 버전 3.2 이상 들어

    MongoDB를 버전 3.2 이상 들어

    User.findOneAndUpdate(
      { "_id": "132324" },
      { "$set": { "hair_color": "yellow" } },
      {
       "projected": { "first_name":1, "last_name": 1 },
       "returnNewDocument": true 
      }
    )...
    
  3. ==============================

    3.{새로운 : TRUE} 사용 옵션 findOneAndUpdate에서 (기본값 : false)를

    {새로운 : TRUE} 사용 옵션 findOneAndUpdate에서 (기본값 : false)를

  4. from https://stackoverflow.com/questions/44104310/mongoose-select-fields-to-return-from-findoneandupdate by cc-by-sa and MIT license