node.js - 在 mongodb 中读取然后更新的最佳方法是什么?

标签 node.js mongodb mongoose mongodb-query

我需要从集合中读取一个文档,读取它的值,然后如果该值是 <40,我需要递增该值。

这是我目前的解决方案

let promise = db.collection('transactions').findOne(
        { _id: 'myid' }
    ).then(doc => {
        if (doc.count < 40) {
            ///update & increment doc.count
        }
        else {
            //do not increment
        }
    });

findOneAndModify 是否允许在修改前读取文档?

最佳答案

您可以在查询中对这个条件进行编码并执行一个简单的 update :

db.collection('transactions').updateOne(
    {_id: 'id', count: {$lt: 40}},
    {$inc: {count: 1}}
)

如果您需要获取文档(修改前或修改后),只需使用 findAndModify :

db.collection('transactions').findAndModify({
    query: {_id: 'id', count: {$lt: 40}},
    update: {$inc: {count: 1}},
    new: trueIfYouWantToGetTheModifiedVersion
})

关于node.js - 在 mongodb 中读取然后更新的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56857994/

相关文章:

node.js - MongoDB 更新数组中的数组对象

javascript - 按时钟范围查询 mongo 文档 - 正向和反向

javascript - 使用 Mongoose 连接到 MongoDB

javascript - 等待 Mongoose 执行完成

node.js - MongoDB 使用排序查询结果中的位置来计算字段

node.js - 用于多项选择题和答案的 MongoDB 模式设计

javascript - 无法从 nodejs/mongoose 捕获错误

node.js - 使用 NodeJS REST API 获取 Google Cloud Storage 的文件上传进度

node.js - mongodb如何使用get.find(….),像sql的LIKE操作?

node.js - Node js cpu 100%