Javascript db.collection.findOneAndUpdate()未返回;更新的「;文件
继官方Javascript db.collection.findOneAndUpdate()未返回;更新的「;文件,javascript,node.js,mongodb,mongodb-query,Javascript,Node.js,Mongodb,Mongodb Query,继官方 db.students2.findOneAndUpdate( {u id:1}, [{$set:{“total”:{$sum:$grades.grade“}}}}],//$set stage是`$addFields`` stage的别名 {returnNewDocument:true} ) 我的实施,, const userscolection=db().collection(“用户”);//db()通过模块公开 usersCollection.findOneAndUpdate( {u
db.students2.findOneAndUpdate(
{u id:1},
[{$set:{“total”:{$sum:$grades.grade“}}}}],//$set stage是`$addFields`` stage的别名
{returnNewDocument:true}
)
我的实施,,
const userscolection=db().collection(“用户”);//db()通过模块公开
usersCollection.findOneAndUpdate(
{u id:new ObjectID(this.data.\u id)},
{$set:{
总计:this.data.updatedTotal
}
} ,
{returnNewDocument:true}
)
尽管有{returnNewDocument:true}
选项,它仍然返回旧文档
但是,当我再次查询集合时,
userscolection.findOne({u id:new ObjectID()});//返回更新的文档
它返回更新的文档。这意味着db.collection.findOneAndUpdate()
工作正常
问题是,尽管有{returnNewDocument:true}
选项,但它不会返回更新的文档。
这是为什么?要让mongoose返回新文档,需要向查询中添加{new:true} 我会给这个机会:
usersCollection.findOneAndUpdate(
{ _id : new ObjectID (this.data._id) },
{ $set: { total : this.data.updatedTotal } },
{ new: true }
)
要返回它,您需要添加
{returnOriginal: false}
总是检查我解决的问题
由于我使用的是本机mongodb驱动程序,
我们将使用
{returnOriginal:false}
而不是{new:true}
检查此答案您必须再添加一个参数{new:true}
,以便monoose了解您需要更新文档