我有一条MongoDB记录如下:
"id": 1,
"Tasks": [
{
"description": "BLAH",
"Tags": [
{
"Name": "test",
"tagID": "YRG+crq3SJucvlUwTo/uSg=="
},
{
"Name": "Cars",
"tagID": "ObwiiZpNTOGECgHb1HehHg=="
}
]
},
......
]
我试图从'标签'中删除对象。使用'名称:test'参考其标签ID'。查询我删除了“任务”中的整个记录。不只是那个特定的Tags对象。
db.user.update({ 'id': 1 },
{
'$pull': { 'Tasks': {'Tags.tagID': "YRG+crq3SJucvlUwTo/uSg==" }}
},
{ '$multi': 'true' }
)
如何修改我的查询以仅删除该特定标记而不删除整个记录?
答案 0 :(得分:1)
将 positional operator $
与 $pull
更新运算符一起使用,以删除特定的数组元素对象:
db.user.update({"id": 1, "Tasks.description": "BLAH"},
{
"$pull": {"Tasks.$.Tags" : { "tagID": "YRG+crq3SJucvlUwTo/uSg==" }}
},
{ multi: true}
);
答案 1 :(得分:1)
使用Pymongo
和$
运算符
col.update({"id": 1, "Tasks.description": "BLAH"},
{
"$pull": {"Tasks.$.Tags" : { "tagID": "YRG+crq3SJucvlUwTo/uSg==" }}
}, multi=True
)
答案 2 :(得分:0)
我认为您正在寻找$unset
命令。参考here。