使用 MongoDB $pull 删除数组中的文档

2024-01-09

我在 MongoDB 中有一个集合,如下所示:

{
    "_id" : "5327010328645530500",
    "members" : [
        {
            "participationCoeff" : 1,
            "tweetID" : "5327010328645530500"
        },
        {
            "participationCoeff" : 1,
            "tweetID" : "2820402625046999289"
        },
        {
            "participationCoeff" : 0.6666666666666666,
            "tweetID" : "6122060484520699114"
        },
        {
            "participationCoeff" : 1,
            "tweetID" : "4656669980325872747"
        }
    ]
}
{
    "_id" : "2646953848367646922",
    "members" : [
        {
            "participationCoeff" : 1,
            "tweetID" : "2646953848367646922"
        },
        {
            "participationCoeff" : 0.75,
            "tweetID" : "7750833069621794130"
        },
        {
            "participationCoeff" : 0.5,
            "tweetID" : "6271782334664128453"
        }
    ]
}

基本上,集合有簇,其中簇有一个_id场和一个members场地。 Members 字段是一个文档数组,具有以下格式。

{
            "participationCoeff" : 1,
            "tweetID" : "5327010328645530500"
        }

现在,我有时必须通过匹配tweetID来删除集群文档的members属性中的这些子文档。

但是,我无法找到实现此效果的查询。基本上,一个tweetID会参与许多集群,因此会出现在各个集群的'members'属性的多个子文档中。我想提供批量 $pull 操作,在其中我可以删除所有集群中与特定 tweetID 匹配的所有子文档(即它们的成员属性)。

一些帮助和直觉将会非常有帮助。


这正是$pull运算符会这样做,因此在 shell 中您可以使用update like:

db.clusters.update({}, 
    {$pull: {members: {tweetID: '5327010328645530500'}}}, 
    {multi: true})

Set the multi选项,以便更新每个文档,而不仅仅是第一个文档。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 MongoDB $pull 删除数组中的文档 的相关文章

随机推荐