3.5 Python操作MongoDB
我们使用库PyMongo来操作MongoDB,这个库封装了MongoDB操作的所有常见操作。可以在官网查看详细API。
1. 创建连接
import pymongo
# 创建MongoDB连接
# Making a Connection with MongoClient
client = pymongo.MongoClient(host='localhost', port=27017)2. 获取/创建数据库、集合
# 获取/创建数据库
# Getting/Creating a Database
db = client.test
# db = client['test']
# 获取/创建集合
# Getting/Creating a collection
collection = db.students
# collection = db['students']3. 插入文档数据
4. 查询文档数据
上面的高级查询中的条件键值已经不是单纯的数字了,而是一个字典,其键名为比较符号 $gt,意思是大于,键值为 20,这样便可以查询出所有年龄大于 20 的数据。比较符号归纳如下表:
符号
含义
示例
$lt
小于
{'age': {'$lt': 20}}
$gt
大于
{'age': {'$gt': 20}}
$lte
小于等于
{'age': {'$lte': 20}}
$gte
大于等于
{'age': {'$gte': 20}}
$ne
不等于
{'age': {'$ne': 20}}
$in
在范围内
{'age': {'$in': [20, 23]}}
$nin
不在范围内
{'age': {'$nin': [20, 23]}}
上面的例子中使用了$regex 来指定正则匹配,^M.* 代表以 M 开头的正则表达式,这样就可以查询所有符合该正则的结果。将一些功能符号再归类如下:
符号
含义
示例
示例含义
$regex
匹配正则
{'name': {'$regex': '^M.*'}}
name 以 M开头
$exists
属性是否存在
{'name': {'$exists': True}}
name 属性存在
$type
类型判断
{'age': {'$type': 'int'}}
age 的类型为 int
$mod
数字模操作
{'age': {'$mod': [5, 0]}}
年龄模 5 余 0
$text
文本查询
{'$text': {'$search': 'Mike'}}
text 类型的属性中包含 Mike 字符串
$where
高级条件查询
{'$where': 'obj.fans_count == obj.follows_count'}
自身粉丝数等于关注数
这些操作的更详细用法在可以在 MongoDB 官方文档找到:https://docs.mongodb.com/manual/reference/operator/query/。
5. 计数
6. 排序
7. 偏移与限制查询个数
8. 更新数据
9. 删除
10. 案例实操:爬取猫眼电影存储到MongoDB
应用库:
Requests发起请求获取响应数据,PyQuery解析响应数据获得想要的数据,pymongo保存数据到MongoDB数据库
Last updated