我们正尝试使用MongoDB $ pull运算符删除深度嵌套的数组项,即array.array.matching_item,但是,每次尝试均失败。如果我们使用位置运算符,则只有在array.array中可能有多个匹配项时,它才删除第一个匹配项。我们也尝试过使用$ elemMatch,但无法使其正常工作。
我们有这样的文档数据:
{
_id: 123,
shipping_lines: [
{
_id: 5,
related_items: [
{
name: "George"
},
{
name: "Adam"
}
]
},
{
_id: 6,
related_items: [
{
name: "George"
},
{
name: "Tom"
}
]
}
]
}
然后,我们尝试删除所有匹配的数组项:
shipping_lines.related_items.name: "George"
我们找到的唯一答案要么不处理深度嵌套的数组,要么仅从每个文档中删除第一个匹配的数组项。