删除 mongoDB 中的部分数据

Delete partial data in mongoDB

我有一个 mongoDB 集合,其中包含 372985 个名称,我想删除 200000 之后的条目,以便删除后的条目总数从 372985200000

如何通过 mongoDB 查询来做到这一点?

用例

我的 python 代码无法根据我的机器配置处理大量数据,所以我想减小 mongo 集合的大小,以便它可以 运行 在有限的 RAM 中.

如果 mongo 查询无法做到这一点,有人可以提示尝试 python 做同样的事情。

您需要分步进行,因为MongoDB需要一个查询来匹配要删除的文档; MongoDB 删除文档时不能使用 skiplimit

  1. 查找要删除的文档(的id),使用skip跳转到200000之后的文档
  2. 删除属于在 1
  3. 中找到的列表的文档

您可以在 mongo shell:

中尝试
var to_delete = db.collection.find({}, {_id : 1})
        .skip(200000)
        .toArray()
        .map(function(doc) { return doc._id; });

db.collection.remove({_id: {$in: to_delete}})