0

我是 MongoDB 的新手,所以我知道这是一个非常简单的问题,但是我到处寻找,但找不到答案?基本上我试图找到包含单词“删除”的集合中的所有记录并删除它们。为了获取记录,我正在使用

 db.collection.distinct("delete")

(如果我错了,请纠正我)。但是我将如何去实际删除那些?我已经尝试从中创建一个变量(即

 var query = db.collection.distinct("delete")

) 然后执行

db.collection.remove(query)

但记录还在吗?任何帮助都会很棒!

4

3 回答 3

2
var query = db.collection.distinct("delete")
db.collection.remove({ delete : {$in : query} })

注意:它将删除每个具有删除键的文档

于 2013-05-04T19:09:24.843 回答
2

假设您正在尝试删除所有包含delete字段的文档:

db.collection.remove({delete: {$exists: true}});
于 2013-05-04T19:15:40.067 回答
0

如果您提供一些文档样本,您将获得的答案可能更加具体和准确。

这里的 distinct 可能存在混淆。你说'包含删除单词的文件'。一个问题是“删除”一词出现在哪个字段中?

您发出的 distinct () 命令从名为“delete”的字段中返回不同的值,而不是在某些字段值中出现“delete”一词的文档的 ID。

例如,如果您有记录

{_id:1, x:"delete"}
{_id:2,delete:true}
{_id:3,delete:null}
{_id:4,delete:false}
{_id:5, x:"leave alone"}

您将删除第一个文档

db.foo.remove({x:"delete"})

您将删除第二条记录

db.foo.remove({delete:true})

您将删除记录 2,3,4

db.foo.remove({delete:{$exists:true}})

无需先将所有记录查询到 shell 中,然后再从它们中编写查询。您可以将条件直接指定给 remove 命令。

于 2013-05-04T21:31:28.200 回答