【发布时间】:2016-08-03 10:06:01
【问题描述】:
我有一个如下所示的文档:
{
"_id" : ObjectId("56fea43a571332cc97e06d9c"),
"sections" : [
{
"_id" : ObjectId("56fea43a571332cc97e06d9e"),
"registered" : [
"123",
"e3d65a4e-2552-4995-ac5a-3c5180258d87"
]
}
]
}
我想删除registered 数组中的'e3d65a4e-2552-4995-ac5a-3c5180258d87'仅具有_id 的'56fea43a571332cc97e06d9e' 的特定部分。
我目前的尝试是这样的,但它只是返回未修改的原始文档。
db.test.findOneAndUpdate(
{
$and: [
{'sections._id': ObjectId('56fea43a571332cc97e06d9e')},
{'sections.registered': 'e3d65a4e-2552-4995-ac5a-3c5180258d87'}
]
},
{
$pull: {
$and: [
{'sections._id': ObjectId('56fea43a571332cc97e06d9e')},
{'sections.registered': 'e3d65a4e-2552-4995-ac5a-3c5180258d87'}
]
}
})
我查看了$pull,但我似乎无法弄清楚如何让它在包含另一个数组的嵌套对象数组上工作。 $pull 示例似乎都只处理一层嵌套。如何使用我提供的_id 从sections 数组中的项目的registered 数组中删除匹配条目?
【问题讨论】:
标签: arrays mongodb mongodb-query subdocument