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

编程入门 行业动态 更新时间:2024-10-06 01:34:48

如何在 MongoDB <a href=https://www.elefans.com/category/jswz/34/1771373.html style=中有条件地更新每个子文档?"/>

如何在 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。 游乐场链接。

更多推荐

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

本文发布于:2024-05-30 10:07:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770379.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:中有   条件   文档   如何在   MongoDB

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!