Bulk packaging operation tool pymongo bulk data operations --mongodb

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

Published 146 original articles · won praise 66 · views 50000 +

Guess you like

Origin blog.csdn.net/qq_38923792/article/details/103913032