MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

Python 集成 MongoDB:使用 PyMongo 和 Motor 的完整指南

2025-01-15 13:42 huorong 精选文章 4 ℃ 0 评论

MongoDB 是一种非关系型(NoSQL)数据库,具有高性能和灵活的数据结构。Python 提供了强大的库(如 pymongomotor)用于与 MongoDB 集成。


1. 安装所需库

使用 pymongo 操作 MongoDB:

bash



pip install pymongo



对于异步操作,可以使用 motor

bash



pip install motor




2. 使用 PyMongo 操作 MongoDB

(1)连接到 MongoDB

python



from pymongo import MongoClient



# 连接到 MongoDB

client = MongoClient("mongodb://localhost:27017/") # 替换为你的 MongoDB 地址

db = client["your_database"] # 选择数据库

collection = db["your_collection"] # 选择集合



print("连接成功!")




(2)基本 CRUD 操作

创建(Insert)

插入单个文档:

python



data = {"name": "Alice", "age": 30, "email": "alice@example.com"}

collection.insert_one(data)

print("插入成功!")



插入多个文档:

python



data_list = [

{"name": "Bob", "age": 25},

{"name": "Carol", "age": 29}

]

collection.insert_many(data_list)




读取(Query)

查询单个文档:

python



result = collection.find_one({"name": "Alice"})

print(result)



查询多个文档:

python



results = collection.find({"age": {"$gt": 25}}) # 查询 age > 25 的文档

for doc in results:

print(doc)



只返回指定字段:

python



result = collection.find({}, {"name": 1, "_id": 0}) # 仅返回 name 字段,不返回 _id




更新(Update)

更新单个文档:

python



collection.update_one({"name": "Alice"}, {"$set": {"age": 31}})



更新多个文档:

python



collection.update_many({"age": {"$lt": 30}}, {"$set": {"status": "young"}})




删除(Delete)

删除单个文档:

python



collection.delete_one({"name": "Alice"})



删除多个文档:

python



collection.delete_many({"age": {"$lt": 30}})




3. 使用 Motor 异步操作 MongoDB

Motor 是基于异步的 MongoDB 驱动,适合与异步框架如 asyncio 搭配使用。

(1)异步连接

python



import motor.motor_asyncio

import asyncio



# 异步连接到 MongoDB

client = motor.motor_asyncio.AsyncIOMotorClient("mongodb://localhost:27017")

db = client["your_database"]

collection = db["your_collection"]



async def main():

print("连接成功!")



asyncio.run(main())




(2)异步 CRUD 操作

异步插入:

python



async def insert_data():

await collection.insert_one({"name": "Alice", "age": 30})



asyncio.run(insert_data())



异步查询:

python



async def fetch_data():

result = await collection.find_one({"name": "Alice"})

print(result)



asyncio.run(fetch_data())




4. 聚合操作

MongoDB 支持强大的聚合框架,用于数据分析和处理。

示例:按年龄分组并统计数量:

python



pipeline = [

{"$group": {"_id": "$age", "count": {"$sum": 1}}}

]

results = collection.aggregate(pipeline)

for result in results:

print(result)




5. 小贴士

  1. 使用 Atlas 云数据库: 如果使用 MongoDB Atlas 云服务,需将连接字符串替换为 Atlas 提供的 URI。
  2. 性能优化:
  3. 索引:为查询字段创建索引以加速查询。
  4. 批量操作:对大量数据使用 insert_many 或批量更新。
  5. 数据安全: 避免将敏感信息硬编码在代码中,使用环境变量存储 MongoDB 的连接信息。

Tags:mongodb windows安装

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言