如何更新 Mongodb 中的多个孙子元素

How to update multiple grand child elements in Mongodb

我正在尝试更新 MongoDB 孙文档以更新 grand 元素值。例如,我需要将所有 "ware" 值更新为 "LUX",其中 "ware" 为 "LAX"。

换句话说我需要改变 "ware": "LAX", ---> "ware": "LUX", 然而"ware":"NYC",不应该改变

这里是示例数据。

[
{
"_id": ObjectId("5db72c636309f84479ec0c7b"),
"productCode": "aaaa",
"brand": "Nike",
"image": "some.jpg",
"sizes": [
    {
    "_id": ObjectId("5db72c636309f84479ec0c7e"),
    "size": "41",
    "wares": [
        {
        "_id": ObjectId("5db72c636309f84479ec0c80"),
        "ware": "LAX",
        "amount": 100
        },
        {
        "_id": ObjectId("5db72c636309f84479ec0c7f"),
        "ware": "NYC",
        "amount": 7
        }
    ]
    },
    {
    "_id": ObjectId("5db72c636309f84479ec0c7c"),
    "size": "42",
    "wares": [
        {
        "_id": ObjectId("5db72c636309f84479ec0c7d"),
        "ware": "LAX",
        "amount": 16
        }
    ]
    }
]
},
{
"_id": ObjectId("5db72c636309f84479ec0c7X"),
"productCode": "aaaa",
"brand": "Nike",
"image": "some.jpg",
"sizes": [
    {
    "_id": ObjectId("5db72c636309f84479ec0c7D"),
    "size": "41",
    "wares": [
        {
        "_id": ObjectId("5db72c636309f84479ec0c8G"),
        "ware": "LAX",
        "amount": 100
        },
        {
        "_id": ObjectId("5db72c636309f84479ec0c7R"),
        "ware": "NYC",
        "amount": 7
        }
      ]
    },
    {
    "_id": ObjectId("5db72c636309f84479ec0c7q"),
    "size": "42",
    "wares": [
        {
        "_id": ObjectId("5db72c636309f84479ec0c7n"),
        "ware": "LAX",
        "amount": 16
        }
      ]
    }
  ]
}
]

我试过了

db.getCollection('products').findAndModify({
query: { sizes: { $elemMatch: { wares:  {$elemMatch: { ware: "LAX" }}}}},
update: { $set: { "sizes.wares.$.ware": 'LUX' } }
})

试试这个:

db.getCollection('products').updateMany(
   {},
   { $set: { "sizes.$[].wares.$[item].ware": 'LUX' } },
   { arrayFilters: [{ "item.ware": "LAX" }] }
)