[英]How to update multiple grand child elements in Mongodb
我正在嘗試更新 MongoDB 孫文檔以更新大元素值。 例如,我需要將所有“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" }] }
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.