自定义Mongodb的操作接口
from pymongo import MongoClient
class MongoAPI(object):
def __init__(self, db_name, table_name, host="127.0.0.1", port=27017):
self.db_name = db_name
self.table_name = table_name
self.host = host
self.port = port
self.conn = MongoClient(host=self.host, port=self.port)
self.db = self.conn[self.db_name]
self.table = self.db[self.table_name]
def get_one(self, query):
# 获取一个指定的值,并且将_id字段不返回
return self.table.find_one(query, projection={'_id': False})
def get_query_all(self, query):
# 返回符合查询条件的所有值
return self.table.find(query)
def get_all(self):
# 返回所有数据
return self.table.find({})
def add(self, kv_dict):
# 插入一个字典值
return self.table.insert_one(kv_dict)
def delete(self, query):
# 删除指定条件的所有值
return self.table.delete_many(query)
def is_exist(self, query):
# 判断是否有值满足当前的查询条件
ret = self.table.find_one(query)
return ret is not None
def update(self, query, kv_dict):
# 更新记录,如果没有就会插入
self.table.update_one(query, {
'$set': kv_dict,
}, upsert=True)
def q_sort(self,column, order=1, query={}):
# 查询结果后,按照column进行排序通过order来进行排序,默认为升序order:1,返回所有数据 降序为-1,
return self.table.find(query).sort(column, order)
if __name__ == '__main__':
ma = MongoAPI(db_name='Student', table_name="16jixinan")
students = [{'id': 1, 'name': 'hhf', 'age': 22, 'hobby': ['足球', '篮球']},
{'id': 2, 'name': 'jyf', 'age': 26, 'hobby': ['wzry', '篮球']},
{'id': 25, 'name': 'pjl', 'age': 15, 'hobby': ['ship', '篮球']}]
for student in students:
# 去重插入
ma.update({'id': student.get('id')}, student)
students_all = ma.get_all()
for student in students_all:
print(student)
print('--'*20)
student_sort = ma.q_sort('age') # 按照age进行升序排序
for student in student_sort:
print(student)
print('--' * 20)
student_is_exist = ma.is_exist({'name': 'hhf'}) # 判读满足条件的记录是否存在
print(student_is_exist)
student_is_exist = ma.is_exist({'name': 'ww'})
print(student_is_exist)
ma.delete({'id': 2}) # 删除id为2的值
测试结果:
{'_id': ObjectId('5e96be7b8c584f65c8d0c35d'), 'id': 1, 'name': 'hhf', 'age': 22, 'hobby': ['足球', '篮球']}
{'_id': ObjectId('5e96be7b8c584f65c8d0c35f'), 'id': 25, 'name': 'pjl', 'age': 15, 'hobby': ['ship', '篮球']}
{'_id': ObjectId('5e96c44ab7333bc6ed6683be'), 'id': 2, 'age': 26, 'hobby': ['wzry', '篮球'], 'name': 'jyf'}
----------------------------------------
{'_id': ObjectId('5e96be7b8c584f65c8d0c35f'), 'id': 25, 'name': 'pjl', 'age': 15, 'hobby': ['ship', '篮球']}
{'_id': ObjectId('5e96be7b8c584f65c8d0c35d'), 'id': 1, 'name': 'hhf', 'age': 22, 'hobby': ['足球', '篮球']}
{'_id': ObjectId('5e96c44ab7333bc6ed6683be'), 'id': 2, 'age': 26, 'hobby': ['wzry', '篮球'], 'name': 'jyf'}
True
False