Python 删除mongoDB中的部分数据

Python 删除mongoDB中的部分数据,python,mongodb,mongodb-query,mongo-shell,database,Python,Mongodb,Mongodb Query,Mongo Shell,Database,我有一个mongoDB集合,其计数为372985名称,我想删除200000之后的条目,以便删除后的条目总数从372985减少到200000 如何通过mongoDB查询实现这一点 用例 我的python代码无法按照我的机器配置处理大量数据,因此我想减小mongo集合的大小,以便它可以在有限的RAM中运行 如果mongo query无法做到这一点,是否有人可以提示python尝试这样做。您需要分步进行,因为MongoDB需要一个查询来匹配要删除的文档;MongoDB在删除文档时不能使用跳过或限制 查

我有一个mongoDB集合,其计数为
372985
名称,我想删除
200000
之后的条目,以便删除后的条目总数从
372985
减少到
200000

如何通过mongoDB查询实现这一点

用例

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


如果mongo query无法做到这一点,是否有人可以提示python尝试这样做。

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

  • 查找要删除的文档的ID,使用“跳过”跳转到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}})
    

    我们可以使用跳过和删除文档游标中的记录吗loop@PraneethGudumasu:你能举例说明吗?试试{MongoClient client=new MongoClient(“localhost”,27017);MongoDatabase db=client.getDatabase(“students”);MongoCollection collection=db.getCollection(“grades”);MongoCursor cursor=collection.find().skip(10.iterator();while(cursor.hasNext()){Document doc=cursor.next();collection.deleteOne(doc);}这是一个mongoshell查询还是什么?我的意思是在哪里运行这个?那个是java驱动程序。我想,我们也可以从mongoshell执行游标