我想更新我的集合中所有具有特定值的文档,这些值驻留在结构如下的嵌套数组中:
[{
"_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 }
)
提前致谢
答案 0 :(得分:1)
尝试arrayFilters更新嵌套数组中的特定元素和$[]
更新所有元素,
db.collection.updateMany(
{ "arrayX.arrayY.colour": "blue" },
{
$set: {
"arrayX.$[].arrayY.$[c].colour": "white"
}
},
{
arrayFilters: [
{ "c.colour": "blue" }
]
}
)