MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como verificar se um documento foi inserido ou atualizado ao usar findOneAndUpdate?


A partir de 8 de agosto de 2019 (Mongoose Versão 5.6.9), a propriedade a ser definida é "rawResult" e não "passRawResult":
M.findOneAndUpdate({}, obj, {new: true, upsert: true, rawResult:true}, function(err, d) {
    if(err) console.log(err);
    console.log(d);
});

Resultado:
{ lastErrorObject:
   { n: 1,
     updatedExisting: false,
     upserted: 5d4befa6b44b48c3f2d21c75 },
  value: { _id: 5d4befa6b44b48c3f2d21c75, rating: 4, review: 'QQQ' },
  ok: 1 }

Observe também que o resultado é retornado como o segundo parâmetro e não o terceiro parâmetro do retorno de chamada. O documento pode ser recuperado por d.value.