PyMongo 和 MongoDB 的基本用法


使用 PyMongo 与 MongoDB 进行交互,涉及连接数据库、插入文档、查询数据、更新数据和删除数据等基本操作。以下是 PyMongo 和 MongoDB 的基本用法示例:

安装 PyMongo

首先,确保已安装 PyMongo:

pip install pymongo

连接到 MongoDB

使用 MongoClient 连接到 MongoDB 实例:

from pymongo import MongoClient

# 建立连接
client = MongoClient('mongodb://localhost:27017')

# 选择数据库和集合
db = client.my_database
collection = db.my_collection

插入数据

插入单个文档

使用 insert_one 方法插入单个文档:

document = {"name": "Alice", "age": 30, "address": "123 Main St"}
collection.insert_one(document)

插入多个文档

使用 insert_many 方法插入多个文档:

documents = [
    {"name": "Bob", "age": 25, "address": "456 Elm St"},
    {"name": "Charlie", "age": 35, "address": "789 Oak St"}
]
collection.insert_many(documents)

查询数据

查询单个文档

使用 find_one 方法查询单个文档:

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

查询多个文档

使用 find 方法查询多个文档:

results = collection.find({"age": {"$gt": 20}})
for doc in results:
    print(doc)

更新数据

更新单个文档

使用 update_one 方法更新单个文档:

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

更新多个文档

使用 update_many 方法更新多个文档:

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

删除数据

删除单个文档

使用 delete_one 方法删除单个文档:

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

删除多个文档

使用 delete_many 方法删除多个文档:

collection.delete_many({"status": "inactive"})

索引

创建索引可以提高查询性能。使用 create_index 方法创建索引:

collection.create_index("name")

连接管理

为高并发场景配置连接池参数,例如最大连接数和等待队列超时时间:

client = MongoClient(
    'mongodb://localhost:27017',
    maxPoolSize=100,
    waitQueueTimeoutMS=1000
)

异常处理

在执行数据库操作时,处理可能出现的异常:

from pymongo.errors import DuplicateKeyError

try:
    collection.insert_one({"_id": 1, "name": "Test"})
except DuplicateKeyError:
    print("Document with the same _id already exists")

综合示例

以下是一个综合示例,展示了如何连接到 MongoDB,进行插入、查询、更新和删除操作:

from pymongo import MongoClient
from pymongo.errors import DuplicateKeyError

# 连接到 MongoDB
client = MongoClient('mongodb://localhost:27017')
db = client.my_database
collection = db.my_collection

# 插入操作
document = {"name": "Alice", "age": 30, "address": "123 Main St"}
try:
    collection.insert_one(document)
except DuplicateKeyError:
    print("Document with the same _id already exists")

# 批量插入
documents = [
    {"name": "Bob", "age": 25, "address": "456 Elm St"},
    {"name": "Charlie", "age": 35, "address": "789 Oak St"}
]
collection.insert_many(documents)

# 查询操作
result = collection.find_one({"name": "Alice"})
print(result)

results = collection.find({"age": {"$gt": 20}})
for doc in results:
    print(doc)

# 更新操作
collection.update_many({"age": {"$lt": 30}}, {"$set": {"status": "young"}})

# 删除操作
collection.delete_many({"status": "inactive"})

# 创建索引
collection.create_index("name")

通过这些示例和最佳实践,你可以高效地使用 PyMongo 进行 MongoDB 的基本操作。


原文链接:codingdict.net