在第一次查询新库存时,当该文档不存在时,它将添加新文档,但随后返回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不知道如何包装代码,以便正确显示。征求意见。
答案 0 :(得分:0)
只需将阶段$ addToSet更改为$ set
try {
db.grades.findOneAndUpdate(
{ "stock" : stock },
{ $set: { "likes" : ip}},
{ upsert:true, returnNewDocument : true }
);
}
catch (e){
print(e);
}
现在使用此代码...