Python 如何使用PyMongo批量删除记录

Python 如何使用PyMongo批量删除记录,python,mongodb,python-2.7,pymongo,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) 批量删除的正确方法是什么?虽然可能存在一些我不知道的用于删除文档数组的助手方法,但我认为最好、最明确的方法是使用循环: for docId in toRemove:

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

如果我们从文档列表开始

docs = list( db.animals.find({'color':'red'}) )
执行以下操作实际上不会从集合中删除任何内容

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

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

虽然可能存在一些我不知道的用于删除文档数组的助手方法,但我认为最好、最明确的方法是使用循环:

for docId in toRemove:
    db.animals.remove({'_id':docId})
只需使用与使用
find
相同的方法即可

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

db.animals.find({'color':'red'})
然后,这将删除它们:

db.animals.remove({'color':'red'})
如果您已经有一个要删除的id列表,则可以使用操作符通过
\u id
上的筛选器删除,如下所示:

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