mongodb中if else基于条件的更新状态

时间:2021-02-11 14:58:08

标签: node.js mongodb typescript if-statement mongodb-query

没有任何其他解决方案..

findOneAndUpdate( {"_id": ObjectId("5714ce0a4514ef3ef68677fd")}, $cond: { if: { $eq: [ "$isRequired", true ] }, then: { "status": "Done" }, else: { { "status": "Approved" } } )

相同的集合状态更新基于 isRequire 是 true 或 false。

1 个答案:

答案 0 :(得分:1)

首先是您的查询语法错误,您在查询对象之后缺少 {}

更新查询由:update({query}, {update}) 组成,您写的是:update( {query}, update)

此外,您不能在更新查询中使用 $cond,因为它是一个聚合阶段,但自 Mongo 4.2 以来,mongo 允许聚合阶段 (reference),因此您可以执行此查询:

db.collection.update({
  "_id": "5714ce0a4514ef3ef68677fd"
},
[
  {
    "$set": {
      "status": {
        "$cond": {
          if: {
            $eq: [
              "$isRequired",
              true
            ]
          },
          then: "Done",
          else: "Approved"
        }
      }
    }
  }
])

示例 here 为假值,here 为真值