繁体   English   中英

如何使用PyMongo批量删除记录

[英]How to batch delete records using PyMongo

我们如何使用PyMongo批量删除大量文档?

如果我们从一个文档列表开始,

docs = list( db.animals.find({'color':'red'}) )

执行以下操作实际上不会从集合中删除任何内容!

toRemove = [x['_id'] for x in docs]
db.animals.remove(toRemove)

批量删除的正确方法是什么?

只需使用与使用find相同的方法remove

如果以下行返回要删除的记录:

db.animals.find({'color':'red'})

然后这将删除它们:

db.animals.remove({'color':'red'})

如果您已经有要删除的ID列表,可以使用$in运算符删除_id上的过滤器,如下所示:

db.animals.remove({'_id': {'$in': idsToRemove}})

虽然可能存在一些我不知道的删除文档数组的辅助方法,但我会说最好也是最明确的方法是使用循环:

for docId in toRemove:
    db.animals.remove({'_id':docId})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM