bạn có thể sử dụng $[]
positional-all
tới các phần tử mảng lồng nhau được cập nhật, mongo doc cho $ []
truy vấn
db.t14.update(
{},
{ $set: { "calc.$[].datasets.$[elem].name": "updated" } },
{ arrayFilters: [ { "elem": "x1" } ], multi: true}
)
bộ sưu tập mẫu với một tài liệu
> db.t14.findOne()
{
"_id" : 1,
"calc" : [
{
"preset" : "abc",
"datasets" : [
{
"_id" : "x1",
"name" : "n1"
},
{
"_id" : "x2",
"name" : "n2"
}
]
}
]
}
cập nhật
> db.t14.update({},{$set: { "calc.$[].datasets.$[elem].name": "newname" } },{ arrayFilters: [{ "elem.name": "n1" }], multi: true})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
đăng cập nhật
> db.t14.findOne()
{
"_id" : 1,
"calc" : [
{
"preset" : "abc",
"datasets" : [
{
"_id" : "x1",
"name" : "newname"
},
{
"_id" : "x2",
"name" : "n2"
}
]
}
]
}
>