MongoDB:从文档中删除数组元素

Abh*_*kur 2 arrays mongodb

我是Mongo的新手,因此试图实现一个用例,我需要构建一个查询来从一个文档集合中删除数组中的数据.

这是我的一份文件:

{
"id" : 2,
"owners" : ["aa", "bb"]
}
Run Code Online (Sandbox Code Playgroud)

现在我需要构建一个查询来查找基于所有者的所有文档记录,如果存在,则从owners数组中删除它们.

例如,我发送aa了查询,然后我需要从包含该所有者的所有文档中删除它.

我找到了这个逻辑:

$db.coll.update({cond to identify document},{$pull:{'owners':{'aa':<>}}})
Run Code Online (Sandbox Code Playgroud)

但是不明白这是如何删除数据的.提前致谢!

gyp*_*der 6

以下查询通过删除匹配ownersowners数组来更新集合.更新查询包含三个块,

db.coll.update(
        { },
        { $pull: { owners: "aa" } },
        { multi: true }
    )
Run Code Online (Sandbox Code Playgroud)

第一个块 {}:它指定要查找文档的查询,因为我们正在考虑所有文档,我们将其保留为空白

第二个块{ $pull: { owners: "aa" } }:这个块owners从所有文档中删除数组中的匹配元素.

第三块{ multi: true }:此块指定,我们正在考虑更新所有匹配文档,{ multi: false }将仅更新第一个匹配的文档

要了解更多信息,您可以点击此链接