Skip to content

Python操作MongoDB

当你开始写爬虫、内容项目,或者保存结构变化较多的数据时,Python 和 MongoDB 的组合会非常自然。

因为 Python 里的字典和列表,本来就和文档结构非常接近。

本节目标

  • 学会安装 MongoDB 的 Python 客户端
  • 学会建立连接
  • 学会插入、查询、更新、删除文档
  • 理解 Python 字典和 MongoDB 文档之间的自然对应关系

安装客户端

bash
pip install pymongo

安装完成后,就可以在 Python 中使用 MongoDB。

建立连接

python
from pymongo import MongoClient

client = MongoClient("mongodb://127.0.0.1:27017/")
db = client["study_db"]
collection = db["articles"]

这里:

  • study_db 是数据库名
  • articles 是集合名

插入一条文档

python
from pymongo import MongoClient

client = MongoClient("mongodb://127.0.0.1:27017/")
db = client["study_db"]
collection = db["articles"]

doc = {
    "title": "Python 入门",
    "author": "小明",
    "views": 120
}

result = collection.insert_one(doc)
print(result.inserted_id)

这表示把一个字典风格的数据写进 MongoDB。

查询文档

python
for item in collection.find():
    print(item)

输出结果可能像:

text
{'_id': ObjectId('...'), 'title': 'Python 入门', 'author': '小明', 'views': 120}

为什么会多一个 _id

这是 MongoDB 自动生成的唯一标识,属于正常现象。

条件查询

python
for item in collection.find({"author": "小明"}):
    print(item)

这表示只查作者为“小明”的文档。

更新文档

python
collection.update_one(
    {"author": "小明"},
    {"$set": {"views": 200}}
)

这里:

  • 第一个字典是查询条件
  • 第二个字典是更新动作

$set 表示更新指定字段值。

删除文档

python
collection.delete_one({"author": "小明"})

这表示删除符合条件的一条文档。

一个完整的增删改查流程

python
from pymongo import MongoClient

client = MongoClient("mongodb://127.0.0.1:27017/")
db = client["study_db"]
collection = db["articles"]

# 新增
collection.insert_one({
    "title": "Django 入门",
    "author": "小红",
    "views": 88
})

# 查询
for item in collection.find({"author": "小红"}):
    print(item)

# 更新
collection.update_one(
    {"author": "小红"},
    {"$set": {"views": 150}}
)

# 删除
collection.delete_one({"author": "小红"})

这个例子已经把 MongoDB 最常见的基础操作串起来了。

为什么 Python 和 MongoDB 很搭

因为 Python 中最常见的数据结构之一是字典,而 MongoDB 文档本身就很像 JSON 对象。

例如:

python
doc = {
    "title": "Python 入门",
    "author": "小明",
    "tags": ["python", "基础"]
}

这种结构直接插入 MongoDB 会非常自然。

常见错误

1. 连不上 MongoDB

常见原因:

  • MongoDB 服务没启动
  • 地址写错
  • 端口不对

2. 查询结果里出现 _id 就慌

这是 MongoDB 默认生成的主键,非常正常。

3. 以为 MongoDB 查询语法和 SQL 一样

MongoDB 的查询风格更偏字典结构,不要硬套 SQL 写法。

练习题

练习 1

用 Python 连接你的 MongoDB。

练习 2

插入一条课程文档。

练习 3

查询作者为某个人的所有文档。

练习 4

更新某条文档的浏览量。

练习 5

自己总结:

  • Python 字典和 MongoDB 文档为什么很接近

本节小结

这一节的核心,是把 Python 和 MongoDB 真正连接起来。

你最重要的收获应该是:

  • 会建立 MongoDB 连接
  • 会做最基础的增删改查
  • 理解 Python 字典和 MongoDB 文档的自然关系

只要这一层打牢,后面你在爬虫或内容项目中用 MongoDB 存数据时,就会更顺手。

Built with VitePress.