我们如何使用PyMongo批量删除大量文档?
如果我们从文档列表开始,
docs = list( db.animals.find({'color':'red'}) )
执行以下操作实际上并未从集合中删除任何内容!
toRemove = [x['_id'] for x in docs]
db.animals.remove(toRemove)
批量删除的正确方法是什么?
答案 0 :(得分:5)
只需使用remove
,就像使用find
一样。
如果以下行返回要删除的记录:
db.animals.find({'color':'red'})
然后这将删除它们:
db.animals.remove({'color':'red'})
如果您已经有要删除的ID列表,可以使用_id
使用$in
运算符删除过滤器,如下所示:
db.animals.remove({'_id': {'$in': idsToRemove}})
答案 1 :(得分:0)
虽然可能存在一些我不知道的删除文档数组的辅助方法,但我会说最好也是最明确的方法是使用循环:
for docId in toRemove:
db.animals.remove({'_id':docId})