【问题标题】:MongoDB update record and fetch [duplicate]MongoDB更新记录并获取[重复]
【发布时间】:2018-10-11 08:03:02
【问题描述】:

在 MongoDB(使用 node.js)中,我想更新一条记录,然后获取返回的记录。

我可以原子地做到这一点吗?

我的搜索建议我可以使用findOneAndUpdate,但是我对此的测试表明它按照它说的顺序执行它,所以它的“查找”部分正在返回之前找到的记录 更新。

> 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" }

我如何在更新后找到记录?

【问题讨论】:

    标签: node.js mongodb


    【解决方案1】:

    来自 mongodb 文档:

    db.collection.findOneAndUpdate(
        filter,
       update,
       {
         projection: <document>,
         sort: <document>,
         maxTimeMS: <number>,
         upsert: <boolean>,
         returnNewDocument: <boolean>,
         collation: <document>,
         arrayFilters: [ <filterdocument1>, ... ]
       }
    )
    

    注意:returnNewDocument 应该是控制接收新文档还是旧文档的选项。

    编辑:如果您使用猫鼬,请检查this 问题

    【讨论】:

    • 注意使用node的时候,应该是returnNewDocument: true而不是returnOriginal: false
    猜你喜欢
    • 1970-01-01
    • 2013-01-21
    • 2021-06-22
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 2021-09-20
    • 2014-11-16
    相关资源
    最近更新 更多