如何使用PyMongo批量删除记录

时间:2014-01-16 04:01:41

标签: python mongodb python-2.7 pymongo

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

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

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

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

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

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

2 个答案:

答案 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})