Mongodb 根据属性值更新数组中的多个嵌入文档
我有一个演示集。在集合的每个文档中都有一个包含多个文档的数组。示例文档为:Mongodb 根据属性值更新数组中的多个嵌入文档,mongodb,Mongodb,我有一个演示集。在集合的每个文档中都有一个包含多个文档的数组。示例文档为: { _id: 1, persons: [{ name: "Jack", gender: "Male" }, { name: "Ma", gender: "Female" }, { name: "Ho", gender: "Other" }] } 我想只更改文档_id=1的persons数组中嵌套文档的gender=Male和gender=Other的n
{
_id: 1,
persons: [{
name: "Jack",
gender: "Male"
}, {
name: "Ma",
gender: "Female"
}, {
name: "Ho",
gender: "Other"
}]
}
我想只更改文档_id=1的persons数组中嵌套文档的gender=Male和gender=Other的name属性,并且根据gender的值,每个文档值的name属性将不同
认为性别=男性文档名称的值将是Jul,性别=其他文档名称的值将是Tisa
如何设计单个更新查询?您想使用
编辑:
我编辑了我的答案,只需更改ArrayFilter的条件。
db.collection.updateOne(
{
_id: 1,
},
{
$set: {
"persons.$[elem].name": "new_name",
}
},
{
arrayFilters: [{"elem.gender": {$in: ["Male", "Other"]}}]
});
db.collection.updateOne(
{
_id: 1,
},
{
$set: {
"persons.$[elem].name": "Jul",
"persons.$[elem2].name": "Tisa",
}
},
{
arrayFilters: [
{"elem.gender": "Male"},
{"elem2.gender": "Other"},
]
});