Mongodb 从嵌套在另一个数组中的数组中删除特定记录

Mongodb 从嵌套在另一个数组中的数组中删除特定记录,mongodb,pymongo,Mongodb,Pymongo,我有如下MongoDB记录: "id": 1, "Tasks": [ { "description": "BLAH", "Tags": [ { "Name": "test", "tagID": "YRG+crq3SJucvlUwTo/uSg==" }, { "Name": "Cars",

我有如下MongoDB记录:

"id": 1,
"Tasks": [
    {
        "description": "BLAH",
        "Tags": [
            {
                "Name": "test",
                "tagID": "YRG+crq3SJucvlUwTo/uSg=="
            },
            {
                "Name": "Cars",
                "tagID": "ObwiiZpNTOGECgHb1HehHg=="
            }
        ]

    },
    ......
  ]
我正试图通过引用“tagID”从“Tags”中删除带有“Name:test”的对象。我的查询删除了“Tasks”中的整个记录,而不仅仅是特定的Tags对象

db.user.update({ 'id': 1 }, 
    { 
        '$pull': { 'Tasks': {'Tags.tagID': "YRG+crq3SJucvlUwTo/uSg==" }}
    },
    { '$multi': 'true' }
)

如何将查询简化为仅删除该特定标记而不删除整个记录?

我想您正在查找
$unset
命令。参考。

使用
$pull
更新操作符删除特定数组元素对象:

db.user.update({"id": 1, "Tasks.description": "BLAH"},
   {
       "$pull": {"Tasks.$.Tags" : { "tagID": "YRG+crq3SJucvlUwTo/uSg==" }}
   },
   { multi: true}
);

使用
Pymongo
和运算符


我认为这是
multi
而不是
$multi
@Michael你是对的,谢谢你的更正。
col.update({"id": 1, "Tasks.description": "BLAH"},
    {
           "$pull": {"Tasks.$.Tags" : { "tagID": "YRG+crq3SJucvlUwTo/uSg==" }}
    }, multi=True 
)