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

时间:2016-09-19 12:02:35

标签: arrays mongodb

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

这是我的一份文件:

{
"id" : 2,
"owners" : ["aa", "bb"]
}

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

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

我发现了这个逻辑:

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

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

1 个答案:

答案 0 :(得分:6)

以下查询通过从owners数组中删除匹配的owners来更新集合。更新查询包含三个块,

db.coll.update(
        { },
        { $pull: { owners: "aa" } },
        { multi: true }
    )

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

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

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

要了解详情,您可以按照link

进行操作