Files
qiaoxinjiu 6994b185a3 addproject
2026-01-22 19:10:37 +08:00

176 lines
7.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding:utf-8 -*-
import pymongo
from base_framework.public_tools.db_dbutils_init import get_my_mongo_connection
from base_framework.public_tools import log
obj_log = log.get_logger()
class MongoDbHelper:
def __init__(self):
# """
# 初始化mongodb、并且链接指定数据库
# :param collection:
# :param collect_db_name:
# """
# init = InitConfig()
# self.host = init.MONGO_HOST
# self.port = init.MONGO_PORT
# self.user = init.MONGO_USER
# self.pwd = init.MONGO_PASSWORD
#
# try:
# self.connect_ = pymongo.MongoClient(host=self.host,
# port=int(self.port),
# username=self.user,
# password=self.pwd,
# authSource="hulk_teach_marketing"
# )
# except Exception as e:
# obj_log.error("mongdb连接失败{}".format(e))
self.conn = get_my_mongo_connection().mongo_connect()
def mongo_find(self, db_name, collection_name, query={}, select_value=None):
db = self.conn[db_name]
data = db.get_collection(collection_name).find(query, select_value)
obj_log.info("mongo查询语句db.getCollection({}).find({},{}).limit(501)".format(collection_name, query, select_value))
return data
def mongo_select_all(self, db_name, collection_name, query={}, select_value=None):
"""
| 功能说明: | 查询mongo数据 |
| 输入参数: | db_name | 数据库 |
| | collection_name | 表(集合) |
| | query={} | 查询条件 |
| | column={} | 展示列:默认会展示 "_id" |
| 返回参数: | 查询结果(tuple) |
| 作者信息: | xl | 2020/11/26 21:11 |
| 函数位置: | public_tool/mongohelper.py ||
"""
data = self.mongo_find(db_name, collection_name, query, select_value)
d = []
for i in data:
d.append(i)
return tuple(d)
def mongo_insert_many(self, db_name, collection_name, insert_value):
"""
| 功能说明: | 插入mongo数据 |
| 输入参数: | db_name | 数据库 |
| | collection_name | 表(集合) |
| | insert_value | 插入值 |
| 返回参数: | TRUE/FALSE |
| 作者信息: | xl | 2020/11/26 21:11 |
| 函数位置: | public_tool/mongohelper.py ||
"""
try:
db = self.conn[db_name]
db.get_collection(collection_name).insert_many(insert_value)
obj_log.info("mongo插入语句db.getCollection({}).insertMany({})".format(collection_name, insert_value))
except Exception as e:
obj_log.error("插入数据失败:{}".format(e))
return False
return True
def mongo_update_many(self, db_name, collection_name, query, update_value):
"""
| 功能说明: | 修改mongo数据 |
| 输入参数: | db_name | 数据库 |
| | collection_name | 表(集合) |
| | query | 修改条件 |
| | update_value | 修改值 |
| 返回参数: | TRUE/FALSE |
| 作者信息: | xl | 2020/11/26 21:11 |
| 函数位置: | public_tool/mongohelper.py ||
"""
try:
db = self.conn[db_name]
result = db.get_collection(collection_name).update_many(query, update_value)
obj_log.info("mongo修改语句db.getCollection({}).updateMany({})".format(collection_name, update_value))
obj_log.info("修改数量:{}".format(result.modified_count))
except Exception as e:
obj_log.error("修改失败:{}".format(e))
return False
return True
def mongo_delete_many(self, db_name, collection_name, delete_value):
"""
| 功能说明: | 删除mongo数据 |
| 输入参数: | db_name | 数据库 |
| | collection_name | 表(集合) |
| | delete_value | 删除值 |
| 返回参数: | TRUE/FALSE |
| 作者信息: | xl | 2020/11/26 21:11 |
| 函数位置: | public_tool/mongohelper.py ||
"""
try:
db = self.conn[db_name]
result = db.get_collection(collection_name).delete_many(delete_value)
obj_log.info("mongo删除语句db.getCollection({}).deleteMany({})".format(collection_name, delete_value))
obj_log.info("删除数量:{}".format(result.deleted_count))
except Exception as e:
obj_log.error("删除失败:{}".format(e))
return False
return True
def mongo_count(self, db_name, collection_name, filter, session=None, **kwargs):
"""
| 功能说明: | 查询mongo数据 |
| 输入参数: | db_name | 数据库 |
| | collection_name | 表(集合) |
| | filter | 查询条件 |
| 返回参数: | 统计结果 |
| 作者信息: | xl | 2020/11/26 21:11 |
| 函数位置: | public_tool/mongohelper.py ||
"""
db = self.conn[db_name]
db_collection = db[collection_name]
db_count = db_collection.count_documents(filter, session, **kwargs)
return db_count
def mongo_aggregate(self, db_name, collection_name, pipline, session=None, **kwargs):
"""
| 功能说明: | (aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果 |
| 输入参数: | db_name | 数据库 |
| | collection_name | 表(集合) |
| | pipline | a list of aggregation pipeline stages |
| 返回参数: | 返回聚合结果 |
| 作者信息: | xl | 2020/11/26 21:11 |
| 函数位置: | public_tool/mongohelper.py ||
"""
db = self.conn[db_name]
db_collection = db[collection_name]
data = db_collection.aggregate(pipline, session, **kwargs)
s = []
for i in data:
s.append(i)
return s
if __name__ == '__main__':
s = MongoDbHelper()
# 查询
select_value = {"name": {"$regex": "^测试"}, "status":0}
ss = s.mongo_count(db_name='hulk_teach_marketing', collection_name='activity', filter=select_value)
print(ss)
# print("{}\n".format(ss))
# for i in ss:
# print(i)
# 插入数据
# dd = [{"code": "ACT2079479569078477", "created_time":1637897233410, "creator_id":586470, "creator_name":"xiaoliang02", "creator_type":1, "delete_flag":0, "deleted_time":0,"language":0,"name":"自动插入活动1-page-1001","region":"1","remark":"自动添加活动备注信息","status":1,"type":0,"user_type":0},
# {"code": "ACT2079479569078476", "created_time":1637897233410, "creator_id":586470, "creator_name":"xiaoliang02", "creator_type":1, "delete_flag":0, "deleted_time":0,"language":0,"name":"自动插入活动2-page-1001","region":"1","remark":"自动添加活动备注信息","status":2,"type":0,"user_type":0}]
# s.mongo_insert_many(db_name='hulk_teach_marketing', collection_name='activity', insert_value=dd)
# # 修改数据
# q = {"code": "ACT210477219578032135"}
# y = {"$set": {"name": "切图信息-右下角B区"}}
# dd = s.mongo_update_many(db_name='hulk_teach_marketing', collection_name='activity', query=q, update_value=y)
# # 删除数据
# ddd = {"name": {"$regex": "^自动插入"}}
# s.mongo_delete_many(db_name='hulk_teach_marketing', collection_name='activity', delete_value=ddd)
# pipline = [{"$match": {"region": "5", "delete_flag": 0}}, {"$group": {"_id": "$region", "max_order": {"$max": "$order"}}}]
# p = s.mongo_aggregate('hulk_teach_marketing', 'activity', pipline)