Python|Python 操作 MongoDB 讲解详细
目录
- 1、连接MongoDB
- 2、指定(切换)数据库
- 3、指定(切换)集合
- 4、插入数据
- 5、查询数据
- 6、统计查询
- 7、结果排序
- 8、偏移
- 9、更新数据
- 10、删除数据
1、连接MongoDB 需要使用
Python
第三方库pymongo
来连接以及操作MongoDB
,可以使用pip install pymongo
进行安装。 可以使用下面代码来创建一个MongoDB
的连接对象。import pymongoclient = pymongo.MongoClient(host='localhost', port=27017)
一般来说传入两个参数就可以,第一个参数为地址host(默认是
localhost
)第二个参数为端口port(默认是27017)。还有一种方法是host参数直接传入
MongoDB
的连接字符串,例如:client = pymongo.MongoClient('mongodb://localhost:27017')
2、指定(切换)数据库
db = client.test# 或者# db = client['test']
如果该数据库不存在,则自动创建,否则切换到指定数据库。 注意: 新创建的数据库,在没有插入数据之前在可视化工具里看不到。
3、指定(切换)集合
MongoDB
的数据库中包含很多集合collection
,类似于关系型数据库中的表,同样,我们可以使用下面和指定数据库类似的方式,指定要操作的集合。collection = db.users# 或者collection = db['users']
4、插入数据 调用
collection的insert_one()
方法可以插入单条数据。user = {'name': 'tigeriaf','gender': 'male','age': 24}collection.insert_one(user)
文章图片
在
MongoDB
中,每条数据都有一个唯一的_id属性,如果没有显式的指明_id
,MongoDB
会自动生成ObjectId
类型的_id属性。当然我们也可以插入多条数据,使用的是
insert_many()
方法,数据以列表形式传递。user_list = [{'name': 'zhangsan','gender': 'male','age': 25},{'name': 'lisi','gender': 'male','age': 24},{'name': 'wangwu','gender': 'female','age': 24}]collection.insert_many(user_list)
文章图片
5、查询数据 通过
find_one()
或find()
方法进行数据的查询,find_one()
查询返回单个结果,find()
返回多个结果。result = collection.find_one({'name': 'tigeriaf'})print(type(result), result)
我们查询的是
name
为tigeriaf
的数据,返回结果是字典类型,运行结果如下:{'_id': ObjectId('614be85f1cc0a98d6f034de7'), 'name': 'tigeriaf', 'gender': 'male'}
对于多条数据的查询,我们可以使用find()方法,例如在这里查找年龄为20的数据,示例如下:
results = collection.find({'gender': "male"})print(results)for result in results:print(result)
运行结果如下:
返回结果是
{'_id': ObjectId('614be85f1cc0a98d6f034de7'), 'name': 'tigeriaf', 'gender': 'male'}
{'_id': ObjectId('614beb3ad0f17d253e2ef81c'), 'name': 'zhangsan', 'gender': 'male'}
{'_id': ObjectId('614beb3ad0f17d253e2ef81d'), 'name': 'lisi', 'gender': 'male'}
Cursor
类型,我们可以遍历取到所有的结果。6、统计查询 【Python|Python 操作 MongoDB 讲解详细】可以调用
count()
方法来统计查询结果的条数。count = collection.find({'gender': "male"}).count()print(count)
7、结果排序 可以调用sort()方法对查询的数据进行排序。
results = collection.find().sort('name', pymongo.ASCENDING)for result in results:print(result)
运行结果如下:
{'_id': ObjectId('614bf7fca5af6d1d46df0878'), 'name': 'lisi', 'gender': 'male', 'age': 24}
{'_id': ObjectId('614bf72ab1b973eae1b32fee'), 'name': 'tigeriaf', 'gender': 'male', 'age': 24}
{'_id': ObjectId('614bf7fca5af6d1d46df0879'), 'name': 'wangwu', 'gender': 'female', 'age': 24}
{'_id': ObjectId('614bf7fca5af6d1d46df0877'), 'name': 'zhangsan', 'gender': 'male', 'age': 25}
8、偏移
在某些情况下我们可能只想获取某几条数据,可以使用skip()方法进行偏移操作,比如
skip(2)
,就忽略前2条数据,得到第3条之后的数据。results = collection.find().sort('name', pymongo.ASCENDING).skip(2)for result in results:print(result)
运行结果如下:
{'_id': ObjectId('614bf7fca5af6d1d46df0879'), 'name': 'wangwu', 'gender': 'female', 'age': 24}另外还可以使用
{'_id': ObjectId('614bf7fca5af6d1d46df0877'), 'name': 'zhangsan', 'gender': 'male', 'age': 25}
limit()
方法限制结果个数。results = collection.find().sort('name', pymongo.ASCENDING).skip(1).limit(2)for result in results:print(result)
运行结果如下:
{'_id': ObjectId('614bf72ab1b973eae1b32fee'), 'name': 'tigeriaf', 'gender': 'male', 'age': 24}
{'_id': ObjectId('614bf7fca5af6d1d46df0879'), 'name': 'wangwu', 'gender': 'female', 'age': 24}
9、更新数据 可以使用
update_one()
方法和update_many()
方法对数据进行更新,update_one()
方法更新一条数据,update_many()
方法更新多条数据。condition = {'name': 'wangwu'}user = collection.find_one(condition)user['age'] += 1result = collection.update_one(condition, {'$set': user})print(result)print(result.matched_count, result.modified_count)
在这里调用了
update_one()
方法修改name
为wangwu
的数据,第二个参数需要使用$类型操作符作为字典的键名,返回结果调用matched_count
和modified_count
属性可以获得匹配的数据条数和影响的数据条数。运行结果如下:
调用
1 1
update_many()
方法会更新所有符合条件的数据。condition = {'age': 24}result = collection.update_many(condition, {'$inc': {'age': 1}})print(result)print(result.matched_count, result.modified_count)
上述代码指定了查询条件为
age
等于24,然后更新条件为{'$inc': {'age': 1}}
,也就是age
加1。2 2
可以看到更新了多条数据。
10、删除数据
可以使用
delete_one()
方法和delete_many()
方法删除数据,delete_one()
方法删除一条数据,delete_many()
方法删除多条数据。result = collection.delete_one({'name': 'zhangsan'})print(result.deleted_count)result = collection.delete_many({'gender': "male"})print(result.deleted_count)
运行结果如下:
1
2
delete_one()
删除的是第一条符合条件的数据,delete_many()
删除的是所有符合条件的数据。到此这篇关于
Python
操作 MongoDB
讲解详细的文章就介绍到这了,更多相关Python
操作 MongoDB
内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!推荐阅读
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- MongoDB,Wondows下免安装版|MongoDB,Wondows下免安装版 (简化版操作)
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- python自定义封装带颜色的logging模块
- 在线版的迅捷思维导图怎么操作()
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- Python基础|Python基础 - 练习1
- 操作系统|[译]从内部了解现代浏览器(1)
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)