删除 mongoDB 中的部分数据
Delete partial data in mongoDB
我有一个 mongoDB 集合,其中包含 372985
个名称,我想删除 200000
之后的条目,以便删除后的条目总数从 372985
到 200000
如何通过 mongoDB 查询来做到这一点?
用例
我的 python 代码无法根据我的机器配置处理大量数据,所以我想减小 mongo 集合的大小,以便它可以 运行 在有限的 RAM 中.
如果 mongo 查询无法做到这一点,有人可以提示尝试 python 做同样的事情。
您需要分步进行,因为MongoDB需要一个查询来匹配要删除的文档; MongoDB 删除文档时不能使用 skip
或 limit
。
- 查找要删除的文档(的id),使用skip跳转到200000之后的文档
- 删除属于在 1
中找到的列表的文档
您可以在 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}})
我有一个 mongoDB 集合,其中包含 372985
个名称,我想删除 200000
之后的条目,以便删除后的条目总数从 372985
到 200000
如何通过 mongoDB 查询来做到这一点?
用例
我的 python 代码无法根据我的机器配置处理大量数据,所以我想减小 mongo 集合的大小,以便它可以 运行 在有限的 RAM 中.
如果 mongo 查询无法做到这一点,有人可以提示尝试 python 做同样的事情。
您需要分步进行,因为MongoDB需要一个查询来匹配要删除的文档; MongoDB 删除文档时不能使用 skip
或 limit
。
- 查找要删除的文档(的id),使用skip跳转到200000之后的文档
- 删除属于在 1 中找到的列表的文档
您可以在 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}})