2016-11-24 7 views
3

는 내가 원하는 것은 :findOneAndUpdate는 삽입시 null을 반환합니까?

  1. 반환 1 삽입 문서는 이전에 존재하지 않는 경우에도 성공합니다.
  2. 반환 1 업데이트는

을 성공하지만 문서가 존재하고 성공적으로 업데이트되는 경우에만 결과를 반환 findOneAndUpdate에이를 것으로 보인다 수없는 경우.

내 쿼리 :

User.findOneAndUpdate(
    { email: email }, 
    { $set: { verified: 1 } }, 
    { upsert: true } 
).exec(callback); 
+0

[**'WriteResult' **] (https://docs.mongodb.com/manual/reference/method/WriteResult/) 설명서를보십시오. – chridam

답변

0

당신이 결과가 업데이트 된 문서가되고 싶어요 가정하면, 다음과 같이 당신의 쿼리를 수정해야합니다

User.findOneAndUpdate(
    { email: email }, 
    { $set: { verified: 1 } }, 
    { upsert: true, returnNewDocument: true } 
).exec(callback); 

returnNewDocument 속성이 콜백을 만들 것입니다 원본 대신 업데이트 된 문서를 반환하십시오. 존재하지 않는 문서에 대한 업 샘플의 경우 빈 세트 대신 새 문서를 리턴합니다.

1

당신은 당신이 사용할 수있는 updateWriteOpResult 개체로 updateWriteOpCallback 콜백에 몽고에서 전체 응답을 반환합니다 기본 모음의 updateOne() 또는 updateMany() 메소드를 호출 할 수있는 기본 드라이버를 액세스 할 수 있습니다. 이 경우 예를

User.collection.updateOne(
    { "email": email }, 
    { "$set": { "verified": 1 } }, 
    { "upsert": true }, 
    function(err, result) { 

     // The number of documents that matched the filter. 
     console.log(result.matchedCount); 

     // The number of documents that were modified.  
     console.log(result.modifiedCount); 

     // The number of documents upserted. 
     console.log(result.upsertedCount); 

     // The total count of documents scanned. 
     console.log(result.result.n);  

     // The total count of documents modified. 
     console.log(result.result.nModified); 
    } 
); 

위해 당신은 아마 위의 전화를 만들기 위해 result.result.nModifiedresult.upsertedCount 속성을 확인해야합니다.

관련 문제