在Mongo DB中,UpdateOne()
和findOneAndUpdate()
方法有什么区别呢?我似乎无法理解它们之间的差异。如果能使用UpdateOne()
和findOneAndUpdate()
进行演示示例,将不胜感激。
在Mongo DB中,UpdateOne()
和findOneAndUpdate()
方法有什么区别呢?我似乎无法理解它们之间的差异。如果能使用UpdateOne()
和findOneAndUpdate()
进行演示示例,将不胜感激。
使用 mongo-shell
开始将文档插入空集合:
db.users.insertOne({name: "Jack", age: 11})
db.users.updateOne({name: "Jack"}, {$set: {name: "Joe"}})
此操作返回一个 UpdateResult
。
{ acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0 }
db.users.findOneAndUpdate({name: "Joe"}, {$set: {name: "Jill"}})
{ _id: ObjectId("62ecf94510fc668e92f3cecf"),
name: 'Joe',
age: 11 }
FindOneAndUpdate
是在您需要更新文档并同时获取它时首选的方法。
如果你需要返回新文档而不是原始文档,你可以使用以下任一方法:
db.users.findOneAndUpdate(
{name: "Joe"},
{$set: {name: "Jill"}},
{returnDocument: "after"}
)
returnDocument: "before" --> 返回原始文档(默认)。
returnDocument: "after" --> 返回更新后的文档。
或者
db.users.findOneAndUpdate(
{name: "Joe"},
{$set: {name: "Jill"}},
{returnNewDocument: true}
)
returnNewDocument: false --> 返回原始文档(默认)。
returnNewDocument: true --> 返回更新后的文档。
注意:如果两个选项都设置了(returnDocument 和 returnNewDocument),则以 returnDocument 为准。