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