【问题标题】:How to delete records found with "distinct" in MongoDB?如何删除在 MongoDB 中以“distinct”找到的记录?
【发布时间】:2013-05-04 19:03:58
【问题描述】:

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

 db.collection.distinct("delete")

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

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

) 然后执行

db.collection.remove(query)

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

【问题讨论】:

  • 删除任何字段?你想用什么语言在... shell 中?

标签: mongodb distinct delete-record


【解决方案1】:

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

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

【讨论】:

  • 啊,好吧。这是完成同样事情的更简洁的方法。谢谢!
【解决方案2】:
var query = db.collection.distinct("delete")
db.collection.remove({ delete : {$in : query} })

小心:它会删除每个具有删除键的文档

【讨论】:

  • 这正是我所需要的。谢谢!
  • 无法让它工作。嗯不适用于字段名称或值
【解决方案3】:

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

这里的 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 中,然后再从它们中组合查询。您可以直接为删除命令指定条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-04
    • 2012-08-04
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多