参考文档:https://www.runoob.com/python3/python-mongodb.html
自用操作Mongodb数据库类
项目地址:https://github.com/Centurywang/mongoDBExtension/tree/master
class ControlMGDB: '''操作Mongodb数据库''' def __init__(self,url): '''初始化 参数: url : mongodb地址 ''' self.myclient = pymongo.MongoClient(url) def create_database(self,db_name='runood'): '''创建数据库 参数: db_name : 数据库名 ''' db = self.myclient[db_name] def judge_database(self,db_name='runood'): '''判断数据库是否存在 参数: db_name : 数据库名 ''' dblist = self.myclient.list_database_names() if db_name in dblist: print('数据库{}存在'.format(db_name)) else: print('数据库{}不存在'.format(db_name)) def create_sets(self,db_name,sets_name): '''创建集合 参数: db_name : 数据库名 sets_name : 集合名 ''' mydb = self.myclient[db_name] mycol = mydb[sets_name] def judge_sets(self,db_name,sets_name): '''判断集合是否存在 参数: db_name : 数据库名 sets_name : 集合名 ''' mydb = self.myclient[db_name] collist = mydb.list_collection_names() if sets_name in collist: print('集合{}存在'.format(sets_name)) else: print('集合{}不存在'.format(sets_name)) def insert_one_document(self,db_name,sets_name,data): '''向集合插入单个文档 参数: db_name : 数据库名 sets_name : 集合名 data : 文档数据(字典类型) ''' mydb = self.myclient[db_name] mycol = mydb[sets_name] x = mycol.insert_one(data) return x.inserted_id # 返回_id字段 def insert_documents(self,db_name,sets_name,dataList): '''向集合插入多个文档 注:指定id插入dataList中数据为: [{ "_id": 1, "name": "RUNOOB", "cn_name": "菜鸟教程"}...] 参数: db_name : 数据库名 sets_name : 集合名 dataList : 文档数据(列表类型,列表内为多个字典) ''' mydb = self.myclient[db_name] mycol = mydb[sets_name] x = mycol.insert_many(dataList) return x.inserted_ids def select_condition_data(self,db_name,sets_name,condition=None,limitNumber=None,specifiedField=None,sortOrd=None): '''根据指定条件查询集合中数据 参数: db_name 数据库名,sets_name 集合名,condition=None 查询条件,limitNumber=None 查询数目,specifiedField 指定返回字段,sortOrd (列表或元组类型分别为字段和排序方式(1升序,2降序)) ''' mydb = self.myclient[db_name] mycol = mydb[sets_name] all_data = [x for x in mycol.find(condition, specifiedField)] if sortOrd is not None: all_data = [x for x in mycol.find(condition, specifiedField).sort(sortOrd[0], sortOrd[1])] if limitNumber is not None: all_data = [x for x in mycol.find(condition, specifiedField).limit(limitNumber)] if sortOrd is not None: all_data = [x for x in mycol.find(condition, specifiedField).sort(sortOrd[0], sortOrd[1]).limit(limitNumber)] return all_data def alter_one_document(self,db_name,sets_name,condition,newValue): '''修改一个文档 参数: db_name : 数据库名 sets_name : 集合名 condition :条件(字典类型) newValue : 新数据(字典类型) ''' mydb = self.myclient[db_name] mycol = mydb[sets_name] newValue = {"$set":newValue} mycol.update_one(condition,newValue) def alter_many_documents(self,db_name,sets_name,newValues,conditions): '''修改所有匹配到的记录 参数: db_name : 数据库名 sets_name : 集合名 conditions :条件(字典类型) newValues : 新数据(字典类型) ''' mydb = self.myclient[db_name] mycol = mydb[sets_name] newValue = {"$set": newValues} mycol.update_many(conditions, newValue) def delete_one_document(self,db_name,sets_name,condition): '''删除一个数据 参数: db_name : 数据库名 sets_name : 集合名 condition :条件(字典类型) ''' mydb = self.myclient[db_name] mycol = mydb[sets_name] mycol.delete_one(condition) def delete_condition_documents(self,db_name,sets_name,condition): '''删除所有匹配数据 注:condition为 {} 删除所有数据 参数: db_name : 数据库名 sets_name : 集合名 condition :条件(字典类型) ''' mydb = self.myclient[db_name] mycol = mydb[sets_name] x = mycol.delete_many(condition) if condition == {}: print('删除所有数据,共%d条'%x.deleted_count) def drop_sets(self,db_name,sets_name): '''删除一个集合 参数: db_name : 数据库名 sets_name : 集合名 ''' mydb = self.myclient[db_name] mycol = mydb[sets_name] mycol.drop()