如何使用PyMongo批量删除记录

Nyx*_*nyx 4 python mongodb pymongo python-2.7

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

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

docs = list( db.animals.find({'color':'red'}) )
Run Code Online (Sandbox Code Playgroud)

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

toRemove = [x['_id'] for x in docs]
db.animals.remove(toRemove)
Run Code Online (Sandbox Code Playgroud)

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

shx*_*hx2 5

只需使用remove您使用的相同方式即可find.

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

db.animals.find({'color':'red'})
Run Code Online (Sandbox Code Playgroud)

然后这将删除它们:

db.animals.remove({'color':'red'})
Run Code Online (Sandbox Code Playgroud)

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

db.animals.remove({'_id': {'$in': idsToRemove}})
Run Code Online (Sandbox Code Playgroud)