class BulkHandler():
"""
bulk操作是基于pymongo语法,目前mongoengine语法不支持bulk操作
所以传入到bulk操作内的数据必须依赖于pymongo的基本语法,基本语法和mongodb的shell语法保持一致
bulk操作的结果处理,可以在该类中处理,也可以在类外处理,这里暂不处理,后期有需求的时候再加
"""
def __init__(self, collection):
self.collection = collection
# 初始化并返回Bulk()集合的新操作生成器。构建器构建MongoDB批量执行的写操作的有序列表。返回值: 新的Bulk()操作生成器对象。
self.bulk = collection.initialize_ordered_bulk_op()
def insert(self, insert_dict):
self.bulk.insert(insert_dict)
def update(self, query_dict, update_dict):
self.bulk.find(query_dict).update({'$set': update_dict})
def push(self, query_dict, update_dict):
self.bulk.find(query_dict).upsert().update({'$push': update_dict})
def pull(self, query_dict, update_dict):
self.bulk.find(query_dict).update({'$pull': update_dict})
def unset(self, query_dict, update_dict):
self.bulk.find(query_dict).update({'$unset': update_dict})
def upsert(self, query_dict, update_dict):
self.bulk.find(query_dict).upsert().update({'$set': update_dict})
def delete(self, delete_dict):
self.bulk.find(delete_dict).remove()
def excute(self):
"""批量执行"""
result = {'success': 0, 'info': {}}
try:
result['info'] = self.bulk.execute()
result['success'] = 1
except Exception as e:
result['info'] = e
return result
Bulk packaging operation tool pymongo bulk data operations --mongodb
Guess you like
Origin blog.csdn.net/qq_38923792/article/details/103913032
Recommended
Ranking