【问题标题】:MongoDB: Is it possible to use $cond operator within Update query?MongoDB:是否可以在更新查询中使用 $cond 运算符?
【发布时间】:2020-08-06 20:04:11
【问题描述】:

我想要达到的目标:

根据当前值更新 MongoDB 中的值。

谷歌搜索后,我发现$cond 运算符可能允许我解决问题,因此我编写了以下查询:

db.getCollection('product').update({_id: ObjectId("77b2a57556a5e634d57d9977")}, 
{"$set": {"availability" : 
   {$cond: [ { "$availability": { $eq: true } }, "Yes", "No" ] }}});

但由于某种原因,它不起作用并且 MongoDB 抛出异常。

那么您能否建议:在更新查询中使用$cond 从技术上讲是正确的方法吗? 如果是,为什么查询不起作用,从语义上看,它对我来说很好,

或可能有其他解决问题的方法,请提出建议。

【问题讨论】:

  • 你的 MongoDB 版本是多少?

标签: mongodb mongodb-query aggregation-framework


【解决方案1】:

所以您似乎正在尝试使用MongoDB >=4.2 支持的Update with Aggregation pipeline。如果您的数据库版本是>=4.2,那么正确的语法应该是

db.getCollection("product").update(
  { _id: ObjectId("77b2a57556a5e634d57d9977") },
  [
    {
      $set: {
        availability: {
          $cond: [
            {
              $eq: ["$availability", true],
            },
            "Yes",
            "No",
          ],
        },
      },
    }
  ]
);

【讨论】:

    猜你喜欢
    • 2021-06-18
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多