对mongodb进行批量写操作,相比单条查询循环操作有很大的性能提升。
参数解释
bulk_write(requests, ordered=True, bypass_document_validation=False, session=None)
- requests:一个包含写操作示例的列表(InsertOne, UpdateOne, UpdateMany, ReplaceOne, DeleteOne, or DeleteMany);
- ordered:表示是否顺序写入,设为True时其中的操作顺序执行,中间出错则后续操作都不会执行;设为False则所有的操作乱序执行,其中一个操作出错其余的操作不会受影响
实例
- 示例
from pymongo import MongoClient, UpdateOne, InsertOne
mongo_db = MongoClient()
print('before:', list(mongo_db.test.test.find({})))
requests = [InsertOne({'b': 1}), UpdateOne({'a': 1}, {'$set': {'c': 1}}), UpdateOne({'b': 1}, {'$set': {'b': 2}})]
result = mongo_db.test.test.bulk_write(requests, ordered=True)
print('after:', list(mongo_db.test.test.find({})))
- 输出
before: [{’_id’: ObjectId(‘5eddf30cbe6fe3c7162c3814’), ‘a’: 1}]
after: [{’_id’: ObjectId(‘5eddf30cbe6fe3c7162c3814’), ‘a’: 1, ‘c’: 1}, {’_id’: ObjectId(‘5f2cf9a5be6fe34e64ab6178’), ‘b’: 2}]