如何更新嵌套数组mongodb中的值?

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

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

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

我想出了这样的东西,但它不起作用:

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

提前致谢

fancykee 回答:如何更新嵌套数组mongodb中的值?

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

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

Playground

本文链接:https://www.f2er.com/96.html

大家都在问