【问题标题】:how to update value in a nested array mongodb?如何更新嵌套数组 mongodb 中的值?
【发布时间】:2021-08-02 15:37:48
【问题描述】:

我想更新我的集合中的所有文档,这些文档具有位于嵌套数组中的特定值,该数组的结构如下:

[{
  "_id": "1",
  "arrayX": [
    {
      "id2": "123", 
      "arrayY": [
        {
          "colour": "blue",
          "size": "small"
        },
        {
          "colour": "red",
          "size": "small"
        },
      ]
    },
    {
      "id2": "12345", 
      "arrayY": [
        {
          "colour": "blue",
          "size": "small"
        },
        {
          "colour": "purple",
          "size": "small"
        },
      ]
    }
  ]
}]

在这种情况下,我需要将上面示例中显示的 2 个元素中的值 "blue" 更新为 "white"

我想出了类似的方法,但它不起作用:

db.collection.update(
   { arrayX.$.arrayY.$.colour: "blue" },
   { $set: { "arrayX.$.arrayY.$.colour" : "white" } },
   { upsert: false }
)

提前致谢

【问题讨论】:

标签: arrays mongodb multidimensional-array mongodb-query


【解决方案1】:

尝试arrayFilters,更新嵌套数组中的特定元素,尝试$[],更新所有元素,

db.collection.updateMany(
  { "arrayX.arrayY.colour": "blue" },
  {
    $set: {
      "arrayX.$[].arrayY.$[c].colour": "white"
    }
  },
  {
    arrayFilters: [
      { "c.colour": "blue" }
    ]
  }
)

Playground

【讨论】:

    猜你喜欢
    • 2015-02-19
    • 2017-09-12
    • 2019-06-08
    • 2020-09-15
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多