当前位置: 首页 > 知识库问答 >
问题:

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

宫坚
2023-03-14

我在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"
        }
    ]
}
{
            "participationCoeff" : 1,
            "tweetID" : "5327010328645530500"
        }

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

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

共有1个答案

司徒寒
2023-03-14

这正是$pull运算符所做的,因此在shell中可以使用update,如下所示:

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

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

 类似资料:
  • 改变原始数组,过滤掉指定的值。 使用 Array.filter() 和 Array.includes() 来剔除指定的值。使用 Array.length = 0 将数组中的长度重置为零,并且通过 Array.push() 只使用 pulled 值重新填充数组。 (对于不改变原始数组的代码片段,请参阅without) const pull = (arr, ...args) => { let ar

  • 我有一个应用程序与MongoDB(猫鼬)在NodeJs。 在一个集合中,我有这种类型的文档,按周定义: 我有一个查找具有相同时间戳的废物的函数,例如,它给出了此时间戳的最长持续时间。 我想删除所有条目与该时间戳: 并只插入持续时间最高的一个: 我正在使用带有$pull和$push的updateOne,但它不起作用。 我还尝试了。 如果我在MongoDB Compass shell中使用相同的命令,

  • 问题内容: 文件: 有没有办法从数组中提取特定对象?IE如何从项数组中提取ID为23的整个项对象。 我努力了: 但是我很确定我没有正确使用’pull’。据我了解,pull将从数组中拉出字段,而不是对象。 关于如何将整个对象从数组中拉出的任何想法。 另外,我尝试在mongoose / nodejs中执行此操作,也不确定这种类型的内容是否在mongoose API中,但我找不到它。 问题答案: 尝试.

  • 在 MongoDB 中,您可以使用 remove() 方法从集合中删除文档,语法格式如下: db.collection_name.remove(     <query>,     {         justOne: <boolean>,         writeConcern: <document>     } ) 参数说明: query:可选参数,定义要删除文档的条件; justOne:可选

  • 在mongodb中,我有一个集合,其中数组有重复的条目,如 我需要删除重复的数组,只保留唯一的数组值,如下所示。 最好的方法是什么 谢啦

  • 问题内容: 我正在使用Mongoose库通过node.js访问MongoDB 有没有办法 从文档中删除密钥 ?即不只是将值设置为null,而是将其删除? 问题答案: 在早期版本中,您需要删除node-mongodb-native驱动程序。每个模型都有一个收集对象,该对象包含node-mongodb- native提供的所有方法。因此,您可以执行以下操作: 从2.0版开始,您可以执行以下操作: 从2