我正在将MongoDB与节点js一起使用 npm install mongodb
npm install mongodb
我想更新一个现有文档并返回更新后的文档,该文档已正确更新。但是它返回的旧文件意味着更新之前的原始文件。我已经使用了returnNewDocument:true参数,但是没有用。
returnNewDocument:true
var filter = { '_id': object_id }, update = { $set: { "status" : data["status"] }, $push: { "statusHistory": { $each: [{ status:data["status"],statusChangedTime:data["statusChangedTime"],comment:data["comment"]}], $position:0, } }, } ,options = { //upsert: false, //multi: false, returnNewDocument: true }; col.findOneAndUpdate(filter, update, options,function(err, res) { if (err) { console.log(err); }else { console.log(res); } });
响应是
{ lastErrorObject: { updatedExisting: true, n: 1 }, value: { //original document }, ok: 1 }
当我直接通过终端转到mongoDB并尝试
db.MyCollection.find().pretty();
该文档已正确更新,它只返回原始文档而不是已更新的文档。
在这里停留了2个小时,我们将不胜感激
在package.json中
"mongodb": "^2.1.4",
Node.js 驱动程序文档中没有提及returnNewDocument选项findOneAndUpdate()(这是具有相同名称的MongoDB Shell命令的选项)。
returnNewDocument
findOneAndUpdate()
相反,它提到了一个名为的选项returnOriginal,默认为true。尝试使用该选项,将其设置false为返回 更新的 文档而不是原始文档。
returnOriginal
true
false