我在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匹配。
一些帮助和直觉会真的很有帮助。
这正是$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