为什么用findOneAndUpdate()插入新文档时,MongoDB为什么返回value:null错误?

时间:2020-03-03 02:10:17

标签: mongodb mongodb-query

在第一次查询新库存时,当该文档不存在时,它将添加新文档,但随后返回value = null的错误。我遵循了documentation,并输入了'returnNewDocument':true ,但是它仍然无法正常工作。

请重新插入新文档时如何退回新文档?

let doc = await col.findOneAndUpdate(
  {'stock': stock}, 
  {'$addToSet': {'likes': ip}}, 
  {'upsert': true, 'returnNewDocument': true}
);

返回以下错误

Updated Document: {"lastErrorObject":{"n":1,"updatedExisting":false,"upserted":"5e5dbb8bf12e9343ec7a9b88"},"value":null,"ok":1,"$clusterTime":{"clusterTime":"6799797218074165249","signature":{"hash":"sd5UrKaesKhMqtQEHBKTlE4Lovw=","keyId":"6794816602199031810"}},"operationTime":"6799797218074165249"}

P.S。 Sry不知道如何包装代码,以便正确显示。征求意见。

1 个答案:

答案 0 :(得分:0)

只需将阶段$ addToSet更改为$ set

try {
db.grades.findOneAndUpdate(
   { "stock" : stock },
   { $set: { "likes" : ip}},
   { upsert:true, returnNewDocument : true }
);
}
catch (e){
   print(e);
}

现在使用此代码...