更新嵌套数组 mongodb
Update nested array mongodb
我想对 collection.
的所有文档的嵌套数组执行 updateMany() 操作
这是文档格式:
{
"number": 1,
"products": [{
"name": "test",
"compositions": ["water", "sugar"],
}]
},
{
"number": 2,
"products": [{
"name": "test12",
"compositions": ["cotton", "linen"],
}]
}
如何通过执行 updateMany() 操作在嵌套在所有文档的产品数组中的 compositions 数组中添加元素(例如“颜色”)?
我试过了,但没用:
db.getSiblingDB("mydatabase").getCollection("stock").find().forEach(element => {
element.products.forEach(product => {
db.stock.updateOne(
{$set: {
'compositions': { $addToSet: { 'product.compositions' : "color"}}
}})
})
})
提前致谢。
您可以使用所有位置运算符$[]
来更新数组中的所有元素。
db.getSiblingDB("mydatabase").getCollection("stock").updateMany(
{},
{ $addToSet: { "products.$[].compositions": "color" } }
)
如果你不想更新所有元素,你可以使用 arrayFilters
(它允许你在 option
部分使用 $[i]
符号):
mongodb example playground
db.getSiblingDB("mydatabase").getCollection("stock").updateMany(
{},
{ $addToSet: { "products.$[i].compositions": "color" } },
{ arrayFilters: [{"i.name": "test12"}]
)
我想对 collection.
的所有文档的嵌套数组执行 updateMany() 操作
这是文档格式:
{
"number": 1,
"products": [{
"name": "test",
"compositions": ["water", "sugar"],
}]
},
{
"number": 2,
"products": [{
"name": "test12",
"compositions": ["cotton", "linen"],
}]
}
如何通过执行 updateMany() 操作在嵌套在所有文档的产品数组中的 compositions 数组中添加元素(例如“颜色”)?
我试过了,但没用:
db.getSiblingDB("mydatabase").getCollection("stock").find().forEach(element => {
element.products.forEach(product => {
db.stock.updateOne(
{$set: {
'compositions': { $addToSet: { 'product.compositions' : "color"}}
}})
})
})
提前致谢。
您可以使用所有位置运算符$[]
来更新数组中的所有元素。
db.getSiblingDB("mydatabase").getCollection("stock").updateMany(
{},
{ $addToSet: { "products.$[].compositions": "color" } }
)
如果你不想更新所有元素,你可以使用 arrayFilters
(它允许你在 option
部分使用 $[i]
符号):
mongodb example playground
db.getSiblingDB("mydatabase").getCollection("stock").updateMany(
{},
{ $addToSet: { "products.$[i].compositions": "color" } },
{ arrayFilters: [{"i.name": "test12"}]
)