我是Mongo的新手,因此尝试实现一个用例,我需要构建一个查询,以便从文档集合中删除数组中的数据。
这是我的一份文件:
{
"id" : 2,
"owners" : ["aa", "bb"]
}
现在我需要构建一个查询来根据所有者查找所有文档记录,如果存在,则从owners
数组中删除它们。
例如,我在查询中发送了aa
,然后我需要从包含该所有者的所有文档中删除它。
我发现了这个逻辑:
$db.coll.update({cond to identify document},{$pull:{'owners':{'aa':<>}}})
但不明白这是如何删除数据的。提前谢谢!
答案 0 :(得分:6)
以下查询通过从owners
数组中删除匹配的owners
来更新集合。更新查询包含三个块,
db.coll.update(
{ },
{ $pull: { owners: "aa" } },
{ multi: true }
)
第一个块{}
:它指定查询文件,因为我们正在考虑所有文件,我们将其保留为空白
第二个块{ $pull: { owners: "aa" } }
:这个块正在从所有文档中删除owners
数组中的匹配元素。
第三个块{ multi: true }
:此块指定我们正在考虑更新所有匹配文档,{ multi: false }
将仅更新第一个匹配的文档
要了解详情,您可以按照link
进行操作