最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何在 MongoDB 中有条件地更新每个子文档?

网站源码admin41浏览0评论

如何在 MongoDB 中有条件地更新每个子文档?

如何在 MongoDB 中有条件地更新每个子文档?

{
  _id: ObjectId(),
  animals: [
    { type: "dog", IQ: 100  }, 
    { type: "cat", IQ: 110  }, 
    { type: "bear", IQ: 120  }, 
    ...
  ]
}

如何写一个updateOne语句,根据子文档的

animals
字段,有条件地更新
type
字段的每个子文档的IQ字段?

例如,

如果

type === "dog"
,则将智商更新为200,但如果
type === "cat"
,则将智商更新为300,以此类推

回答如下:

您可以像这样使用流水线形式的更新:

db.collection.update({},
[
  {
    "$set": {
      "animals": {
        "$map": {
          "input": "$animals",
          "in": {
            "$switch": {
              "branches": [
                {
                  "case": {
                    "$eq": [
                      "$$this.type",
                      "dog"
                    ]
                  },
                  "then": {
                    type: "dog",
                    IQ: 200
                  }
                },
                {
                  "case": {
                    "$eq": [
                      "$$this.type",
                      "cat"
                    ]
                  },
                  "then": {
                    type: "cat",
                    IQ: 300
                  }
                }
              ],
              default: "$$this"
            }
          }
        }
      }
    }
  }
])

使用

$map
遍历数组,并使用
$switch
有条件地设置 IQ。 游乐场链接。

发布评论

评论列表(0)

  1. 暂无评论