gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 13:08:12 27 4
gpt4 key购买 nike

我在 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 字段。成员字段是一个文档数组,具有以下格式。

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

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

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

一些帮助和直觉会很有帮助。

最佳答案

这正是 $pull 操作符所做的,所以在 shell 中你可以使用 update 像:

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

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

关于mongodb - 使用 MongoDB $pull 删除数组中的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15121758/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com