引言
在现代软件开发中,NoSQL数据库已成为技术栈中不可或缺的一部分。MongoDB作为领先的文档型数据库管理系统,为开发者提供了处理非结构化数据的强大工具。PyMongo作为MongoDB的官方Python驱动程序,实现了Python应用程序与MongoDB之间的无缝集成。
什么是PyMongo
PyMongo是Python与MongoDB交互的官方库。这是一个高性能驱动程序,可直接访问MongoDB的所有功能,包括事务、变更流和临时集合等现代特性。
PyMongo核心特性
版本兼容性
- 支持MongoDB 3.6、4.0、4.2、4.4、5.0、6.0和7.0版本
- 兼容Python 3.7+
- 定期更新和安全修复
功能特性
- 完整支持BSON(二进制JSON)格式
- 内置GridFS支持,用于存储大文件
- 故障时自动重连
- 支持SSL/TLS加密
- 性能监控和分析
架构优势
- 线程安全操作
- 连接池管理
- 自动发现集群拓扑
- 支持副本集和分片
PyMongo安装与配置
基础安装
pip install pymongo
安装扩展功能
# 加密支持
pip install pymongo[encryption]
# Kerberos支持
pip install pymongo[gssapi]
# 异步操作
pip install motor
验证安装
import pymongo
print(pymongo.version)
连接MongoDB
主要连接方式
本地连接
from pymongo import MongoClient
# 简单连接
client = MongoClient()
# 或
client = MongoClient('localhost', 27017)
# 或
client = MongoClient('mongodb://localhost:27017/')
带认证的连接
client = MongoClient('mongodb://username:password@localhost:27017/')
连接MongoDB Atlas
client = MongoClient('mongodb+srv://username:password@cluster.mongodb.net/')
SSL连接
client = MongoClient('mongodb://localhost:27017/',
ssl=True,
ssl_cert_reqs=ssl.CERT_NONE)
连接参数配置
client = MongoClient(
host='localhost',
port=27017,
maxPoolSize=50,
minPoolSize=10,
maxIdleTimeMS=30000,
connectTimeoutMS=5000,
socketTimeoutMS=5000,
serverSelectionTimeoutMS=5000,
retryWrites=True,
retryReads=True
)
PyMongo核心组件
数据库操作
# 获取数据库
db = client['mydatabase']
# 或
db = client.mydatabase
# 列出所有数据库
databases = client.list_database_names()
# 删除数据库
client.drop_database('mydatabase')
# 获取数据库统计信息
stats = db.command('dbstats')
集合操作
# 获取集合
collection = db['mycollection']
# 或
collection = db.mycollection
# 创建集合并指定选项
db.create_collection('m