繁体   English   中英

MongoDB findOneAndUpdate 的值小于其他值

[英]MongoDB findOneAndUpdate for value less than other value

如果一个值小于另一个值,我似乎无法弄清楚将值更新(递增)1 的正确语法。 以下是更多细节:

数据结构

{
    "currentTask": 0,
    "maximumTask":10
}

我想做的事

  1. 如果有一个文件currentTask < maximumTask
  2. 检索该文档
  3. currentTask值增加 1

我试过的

let solver = await solvers.findOneAndUpdate({"currentTask":{"$lt": "$maximumTask"}},{"$inc":{"currentTask":1}});

我觉得我很接近但显然是 MongoDB 的新手! 任何帮助将非常感激 :)

您使用的语法用于将文档上的值与输入值(未保存在文档中)进行比较。 如果要比较文档中的两个值,请使用$expr

db.collection.findOneAndUpdate({
  $expr: {
    $lt: [
      "$currentTask",
      "$maximumTask"
    ]
  }
},
{
  $inc: {
    currentTask: 1
  }
})

游乐场示例

此答案将返回更新的文档。 要在更新后获取文档,请使用如下选项

db.collection.findOneAndUpdate(
{$expr: {$lt: ["$currentTask", "$maximumTask"]}},
{$inc: {currentTask: 1}},
{returnNewDocument: 1})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM