import pymongo

目录



1、连接MongDB          2、指定数据库
3、指定集合            4、插入数据
5、查询                6、计数
7、排序                8、偏移
9、更新                10、删除



正文

1、连接mongodb

连接mongodb需要用到pymongo的MongoClient,传入mongodb的IP和端口即可,




mongodb能不能信创_mongodb


第一个参数为地址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)


结果


mongodb能不能信创_字段_02


返回第一条符合搜索的数据

查询多条数据find()


result = collection.find({"age": 25})
print(result)
for i in result:
    print(i)


结果


mongodb能不能信创_mongodb_03


返回的是cursor类型,相当于一个生成器,我们需要遍历才能获取所有结果

如果要查询年龄大于20的数据,怎么办呢?


results = collection.find({'age': {'$gt': 20}})


这里的查询条件已经不是单纯的数字了,而是一个字典了,其键名为比较符


mongodb能不能信创_mongodb能不能信创_04


mongodb能不能信创_mongodb_05


6、计数

要统计查询结果有多少条数据,可以调用count()方法


results = collection.find()
# print(results)
for i in results:
    print(i)
count = collection.find().count()
print(count)


结果:


mongodb能不能信创_mongodb $inc 加小数_06


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)


结果


mongodb能不能信创_mongodb_07


整理为列表


print([result['age'] for result in results])


结果


mongodb能不能信创_mongodb_08


8、偏移

有些情况我们可能只想取某一部分的元素,这时就能用skip()方法

这里偏移是3,就是忽略前面三个元素


results = collection.find().sort('age', pymongo.ASCENDING).skip(3)


运行结果


mongodb能不能信创_mongodb $inc 加小数_09


还可以用limit限制获取的个数


results


运行结果


mongodb能不能信创_mongodb_10


如果没有限制就返回三个结果,限制过后只会取得符合条件的前两条数据

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()方法将条件和修改后的数据传入

运行结果


mongodb能不能信创_字段_11


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

运行结果:


mongodb能不能信创_mongodb_12


10、删除

删除操作调用remove()方法指定删除条件即可,这将把符合条件的数据全删除。示例如下:


result


运行结果:


mongodb能不能信创_mongodb $inc 加小数_13


删除也有两个推荐的方法delete_one()和delete_many()。示例如下:


result


运行结果:


mongodb能不能信创_数据_14


全部代码


import