我有一个文档结构如下的集合:蒙戈游乐场{ "basicDetails": { "id": "1", "name": "xyz" }, "tasks": [{ "id": "10", "name": "task10", "subtasks": [{ "id": "120", "name": "subTask120", "description": "ABC" }] }]}如您所见,每个文档都有 basicDetails 对象和任务数组。每个任务都包含它自己的一些属性和一个子任务数组。我想将子任务的描述从 更新ABC为XYZwhere root level id is 1, task'id is 10 and subTasks.id =120我该怎么做?我知道我可以通过以下方式找到正确的文档:db.collection.find({ "basicDetails.id": "1", "tasks": { "$elemMatch": { "id": "10", "subtasks": { "$elemMatch": { "id": "120" } } } }})但我该如何更新呢?我只想更新单个子任务的一个属性,即描述
1 回答
ABOUTYOU
TA贡献1812条经验 获得超5个赞
要更新嵌套数组,过滤位置运算符 $ [identifier]arrayFilters
标识与更新操作条件匹配的数组元素。
$set
在嵌套数组中尝试以下查询:
db.collection.updateOne({
"basicDetails.id": "1"
},
{
"$set": {
"tasks.$[tasks].subtasks.$[subtasks].description": "XYZ"
}
},
{
"arrayFilters": [
{
"tasks.id": "10"
},
{
"subtasks.id": "120"
}
]
})
添加回答
举报
0/150
提交
取消