arrays - 如何更新嵌套数组 mongodb 中的值?
问题描述
我想更新我的集合中的所有文档,这些文档具有位于嵌套数组中的特定值,该数组的结构如下:
[{
"_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 }
)
提前致谢
解决方案
尝试arrayFilters,更新嵌套数组中的特定元素并$[]
更新所有元素,
db.collection.updateMany(
{ "arrayX.arrayY.colour": "blue" },
{
$set: {
"arrayX.$[].arrayY.$[c].colour": "white"
}
},
{
arrayFilters: [
{ "c.colour": "blue" }
]
}
)
推荐阅读
- php - 对如何遍历 subArray 感到困惑
- c# - 模型属性对它绑定在剃须刀页面中的输入的值有很大影响
- python - django中的循环导入错误
- java - 如何使用 Java 引用布局对象 (XML) 来开发应用程序?
- unit-testing - Vue with jest - 使用异步调用进行测试
- c# - 如何在运行进程时保持父窗体处于活动状态?
- javascript - 使用 Python 和 Flask。我正在尝试使用 javascript 让我的 flash 消息在几秒钟后消失
- javascript - 将上下文传递给回调中的 ajax 调用
- c++ - 如何在命名空间内创建一个类?
- r - 通过 grImport2 绘制 svg 在终端中可以正常工作,而不是通过 knitr