import pymongo
目录
1、连接MongDB 2、指定数据库
3、指定集合 4、插入数据
5、查询 6、计数
7、排序 8、偏移
9、更新 10、删除
正文
1、连接mongodb
连接mongodb需要用到pymongo的MongoClient,传入mongodb的IP和端口即可,
第一个参数为地址host,第二个参数为端口port(默认27017)
import pymongo
client = pymongo. MongoClient(host=’localhost’, port=27017)
2、指定数据库
db = client.test
3、指定集合
Mongodb的集合类似与关系型数据库的表,这里指定一个集合为user
collection = db.user
4、插入数据
插入单条信息
data1 = {"age": 24, "userName": "zhangsan"}
data2 = {"age": 26, "userName": "lisi"}
collection.insert(data1)
collection.insert(data2)
插入多条信息
data1 = {"age": 25, "userName": " zhangsan "}
data2 = {"age": 25, "userName": "lisi"}
collection.insert_many([data1, data2])
5、查询
查询单条数据find_one()
result = collection.find_one({"age": 25})
print(result)
结果
返回第一条符合搜索的数据
查询多条数据find()
result = collection.find({"age": 25})
print(result)
for i in result:
print(i)
结果
返回的是cursor类型,相当于一个生成器,我们需要遍历才能获取所有结果
如果要查询年龄大于20的数据,怎么办呢?
results = collection.find({'age': {'$gt': 20}})
这里的查询条件已经不是单纯的数字了,而是一个字典了,其键名为比较符
6、计数
要统计查询结果有多少条数据,可以调用count()方法
results = collection.find()
# print(results)
for i in results:
print(i)
count = collection.find().count()
print(count)
结果:
7、排序
排序直接调用sort()方法。这里的sort和python语法的sort不同,这里要传入指定的字段和升降序标志
data1 = {"age": 24, "userName": " zhangsan "}
data2 = {"age": 26, "userName": "lisi"}
collection.insert(data1)
collection.insert(data2)
results = collection.find().sort('age', pymongo.ASCENDING)
for i in results:
print(i)
结果
整理为列表
print([result['age'] for result in results])
结果
8、偏移
有些情况我们可能只想取某一部分的元素,这时就能用skip()方法
这里偏移是3,就是忽略前面三个元素
results = collection.find().sort('age', pymongo.ASCENDING).skip(3)
运行结果
还可以用limit限制获取的个数
results
运行结果
如果没有限制就返回三个结果,限制过后只会取得符合条件的前两条数据
9、更新
对于数据的更新我们可以用update()方法,指定更新条件和更新数据即可
condition = {'userName': 'lisi'}
user = collection.find_one(condition)
user['age'] = 18
result = collection.update(condition, user)
print(result)
这里我们更新name为lisi用户的age,指定查询条件,然后把数据查询出来,修改age后调用update()方法将条件和修改后的数据传入
运行结果
ok代表执行成功,nModified代表影响条数
我们也可以用$set操作符对数据进行更新
result
如果原先已经存在字段了,则不会更新
注意
update()方法官方其实是步推荐使用的。官方给了update_one()方法和update_many()方法,它们的第二个参数都需要使用$类型的操作符作为字典的键名,示例如下:
condition = {'userName': 'lisi'}
user = collection.find_one(condition)
user['age'] = 18
result = collection.update_one(condition, {'$set': user})
print(result)
print(result.matched_count, result.modified_count)
update()第二个参数需要使用{'$set': user}的形式,分别调用matched_count和modified_count可以获取匹配的数据条数和影响条数
condition = {'userName': 'lisi'}
result = collection.update_many(condition, {'$inc': {'age': 5}})
print(result)
print(result.matched_count, result.modified_count)
这里指定name为lisi的用户,$inc就是加,把符合条件的数据age加5
运行结果:
10、删除
删除操作调用remove()方法指定删除条件即可,这将把符合条件的数据全删除。示例如下:
result
运行结果:
删除也有两个推荐的方法delete_one()和delete_many()。示例如下:
result
运行结果:
全部代码
import