簡體   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