在MongoDB中(使用node.js)我想更新一条记录然后获取返回的记录。
我可以原子地做这个吗?
我的搜索建议我可以使用findOneAndUpdate
,但是我的测试显示它按照它所说的顺序执行,因此它的“查找”部分返回之前的记录 / strong>更新。
> db.demo.insert({ id: 1, data: "abc" })
WriteResult({ "nInserted" : 1 })
> db.demo.findOneAndUpdate( { id: 1}, { $set: { data: "xyz" } } )
{ "_id" : ObjectId("5ae82c1d53d7ae2de3ffbcea"), "id" : 1, "data" : "abc" }
如何在更新之后找到记录?
答案 0 :(得分:1)
:
db.collection.findOneAndUpdate(
filter,
update,
{
projection: <document>,
sort: <document>,
maxTimeMS: <number>,
upsert: <boolean>,
returnNewDocument: <boolean>,
collation: <document>,
arrayFilters: [ <filterdocument1>, ... ]
}
)
注意:returnNewDocument应该是控制是否接收新文档或旧文档的选项。
编辑:如果您使用mongoose,请检查this问题