https://zhuanlan.zhihu.com/p/375234592

#列出所有数据库名
mgo = pymongo.MongoClient(cfg.get('mgo','dsn'))
print(myclient.list_database_names())
#登录
db = mongo_client.admin
db.authenticate('用户名', '密码')

获取数据库

方法一:db = client.test
方法二:db = client['test']
指定集合
方法一:collection = db.stu
方法二:collection = db['stu']

插入数据

#增加一条
stu1={'id':'001','name':'zhangsan','age':10}
result = collection.insert_one(stu1)
#增加多条
stu2={'id':'002','name':'lisi','age':15}
stu3={'id':'003','name':'wangwu','age':20}
result = collection.insert_many([stu2,stu3])

修改数据

#update_one,第 2 个参数需要使用$类型操作符作为字典的键名
#姓名为zhangsan的记录,age修改为22
condition = {'name': 'zhangsan'}
res = collection.find_one(condition)
res['age'] = 22
result = collection.update_one(condition, {'$set': res})
print(result) #返回结果是UpdateResult类型
print(result.matched_count,result.modified_count) #获得匹配的数据条数1、影响的数据条数1

#update_many,所有年龄为15的name修改为xixi
condition = {'age': 15}
res = collection.find_one(condition)
res['age'] = 30
result = collection.update_many(condition, {'$set':{'name':'xixi'}})
print(result) #返回结果是UpdateResult类型
print(result.matched_count,result.modified_count) #获得匹配的数据条数3、影响的数据条数3

查询数据

find()查找全部数据
返回所有满足条件的结果,如果条件为空,则返回全部结果,返回结果是一个Cursor游标可迭代对象。
rets = collection.find({"age":20}),
for ret in rets:
    print(ret)
 # 查询结果有多少条数据
 count = collection.find().count()
 # 查询结果按年龄升序排序
results = collection.find().sort('age', pymongo.ASCENDING)
print([result['age'] for result in results])


find_one()查找一条数据
接收一个字典形式的条件,返回字典形式的整条数据,如果条件为空,则返回第一条。
ret =collection.find_one({'name': 'zhangsan'})