我在MongoDB中有一个Wikidata集合,其中包含以下结构的文档:
{
id: 178
type: "something"
claims: {
P1{
[0]: {
id: "234"
obj:{...}
}
[1]: {
id: "456"
obj:{}
}
[2]: {
id: "789"
obj:{...}
}
}
P2: {
[list of objects]
}
P3: {
[list of objects]
}
}
}
我正在尝试迭代claims
下的所有项目(即P1, P2, P3
)并删除其下的某些对象(例如id:234
)
换句话说,如何用id: "234"
删除嵌套对象?
答案 0 :(得分:0)
在P1
下,P2
和P3
字段是嵌套数组。
正如@veeram评论的那样,使用$pull
运算符的更新查询是此方案的理想选择。
condition = {'id': '234'}
field_val = {'claims.{}'.format(field): condition for field in ('P1', 'P2', 'P3')}
db.collection_name.update({}, {$pull: field_val })