目录
MongoDB 教程及 PyMongo 连接指南
一、MongoDB 基础介绍
MongoDB 是一个开源的文档型 NoSQL 数据库,采用 BSON(类似 JSON)格式存储数据,适合存储非结构化或半结构化数据。
-
核心概念
1.1 数据库(Database):类似关系型数据库的数据库
1.2 集合(Collection):类似表,但无需固定结构
1.3 文档(Document):类似行,是键值对的集合(BSON 格式)
1.4 字段(Field):类似列
二、MongoDB 基本操作
-
启动 MongoDB 服务
# 默认启动 mongod # 指定数据存储路径 mongod --dbpath /path/to/data/directory
-
连接到 MongoDB
mongo # 连接本地默认端口(27017) mongo --host <host> --port <port> # 连接远程服务器
-
数据库操作
// 查看所有数据库 show dbs // 切换/创建数据库(使用即创建) use mydatabase // 删除当前数据库 db.dropDatabase()
-
集合操作
// 创建集合 db.createCollection("users") // 查看所有集合 show collections // 删除集合 db.users.drop()
-
文档操作
// 插入文档 db.users.insertOne({name: "Alice", age: 30, email: "alice@example.com"}) db.users.insertMany([ {name: "Bob", age: 25}, {name: "Charlie", age: 35} ]) // 查询文档 db.users.find() // 所有文档 db.users.find({age: {$gt: 28}}) // 年龄大于28的 db.users.find().limit(5).sort({age: 1}) // 排序并限制结果 // 更新文档 db.users.updateOne( {name: "Alice"}, {$set: {age: 31}} ) // 删除文档 db.users.deleteOne({name: "Bob"})
三、使用 PyMongo 连接 MongoDB
PyMongo 是 MongoDB 官方的 Python 驱动,用于在 Python 中操作 MongoDB。
-
安装 PyMongo
pip install pymongo
-
基本操作示例
from pymongo import MongoClient
from pymongo.errors import ConnectionFailure
def connect_to_mongodb(host='localhost', port=27017):
"""连接到MongoDB服务器"""
try:
# 创建客户端连接
client = MongoClient(host, port)
# 验证连接
client.admin.command('ping')
print("成功连接到MongoDB服务器")
return client
except ConnectionFailure:
print("无法连接到MongoDB服务器")
return None
def mongodb_operations(client):
if not client:
return
# 1. 获取或创建数据库
db = client['mydatabase']
print(f"当前数据库: {db.name}")
# 2. 获取或创建集合
users_collection = db['users']
# 3. 插入文档
# 3.1 插入单个文档
user1 = {
'name': 'Alice',
'age': 30,
'email': 'alice@example.com',
'hobbies': ['reading', 'hiking']
}
result = users_collection.insert_one(user1)
print(f"插入的文档ID: {result.inserted_id}")
# 3.2 插入多个文档
users = [
{'name': 'Bob', 'age': 25, 'email': 'bob@example.com'},
{'name': 'Charlie', 'age': 35, 'email': 'charlie@example.com'}
]
result = users_collection.insert_many(users)
print(f"插入的多个文档ID: {result.inserted_ids}")
# 4. 查询文档
# 4.1 查询所有文档
print("\n所有用户:")
for user in users_collection.find():
print(user)
# 4.2 条件查询(年龄大于28)
print("\n年龄大于28的用户:")
for user in users_collection.find({'age': {'$gt': 28}}):
print(user)
# 4.3 投影查询(只返回name和age字段)
print("\n只显示姓名和年龄:")
for user in users_collection.find({}, {'name': 1, 'age': 1, '_id': 0}):
print(user)
# 5. 更新文档
# 5.1 更新单个文档
result = users_collection.update_one(
{'name': 'Alice'},
{'$set': {'age': 31}}
)
print(f"\n匹配的文档数: {result.matched_count}")
print(f"修改的文档数: {result.modified_count}")
# 6. 删除文档
# 6.1 删除单个文档
result = users_collection.delete_one({'name': 'Bob'})
print(f"\n删除的文档数: {result.deleted_count}")
# 7. 计数文档
print(f"\n剩余用户数量: {users_collection.count_documents({})}")
if __name__ == "__main__":
# 连接到MongoDB
client = connect_to_mongodb()
# 执行数据库操作
if client:
mongodb_operations(client)
# 关闭连接
client.close()
print("\n已关闭MongoDB连接")
-
代码说明
3.1 连接部分:使用 MongoClient 创建连接,并通过 ping 命令验证连接是否成功
3.2 数据库操作:包含创建数据库、集合,以及插入、查询、更新、删除文档等操作
3.3 异常处理:捕获连接失败的异常,确保程序稳定性
3.4 资源管理:操作完成后关闭数据库连接,释放资源 -
运行方法
4.1 确保 MongoDB 服务已启动
4.2 将代码保存为 mongo_operations.py
4.3 运行命令:python mongo_operations.py -
注意事项
5.1 远程连接时需要替换 host 和 port 为实际的服务器地址和端口
5.2 如需身份验证,连接时需添加用户名和密码参数
5.3 生产环境中应避免在代码中硬编码敏感信息