一、基本概念
- MongoDB: 一个面向文档的数据库系统,使用BSON(Binary JSON)作为存储格式。
- 集合(Collection): 类似于关系型数据库中的表,是文档的集合。
- 文档(Document): MongoDB中的基本数据单位,是键值对的集合,类似于Python中的字典。
pymongo
: Python的MongoDB驱动程序,提供了与MongoDB交互的API。
二、安装pymongo
pip install pymongo
三、连接到MongoDB
要连接到MongoDB数据库,你需要创建一个MongoClient
对象。这个对象将处理与MongoDB服务器的连接。
from pymongo import MongoClient
# 连接到MongoDB服务器(默认是localhost:27017)
client = MongoClient('localhost', 27017)
# 访问特定的数据库(如果数据库不存在,MongoDB将在需要时创建它)
db = client['mydatabase']
# 访问集合(如果集合不存在,MongoDB将在需要时创建它)
collection = db['mycollection']
四、插入文档
你可以使用insert_one
方法插入单个文档,或使用insert_many
方法插入多个文档。
# 插入单个文档
document = {"name": "Alice", "age": 25}
result = collection.insert_one(document)
print(f"Inserted document id: {result.inserted_id}")
# 插入多个文档
documents = [
{"name": "Bob", "age": 30},
{"name": "Charlie", "age": 35}
]
results = collection.insert_many(documents)
print(f"Inserted document ids: {results.inserted_ids}")
五、查询文档
你可以使用find_one
方法查询单个文档,或使用find
方法查询多个文档。
# 查询单个文档
query = {"name": "Alice"}
document = collection.find_one(query)
print(document)
# 查询多个文档
documents = collection.find(query)
for doc in documents:
print(doc)
六、更新文档
你可以使用update_one
方法更新单个文档,或使用update_many
方法更新多个文档。
# 更新单个文档
query = {"name": "Alice"}
new_values = {"$set": {"age": 26}}
result = collection.update_one(query, new_values)
print(f"Matched {result.matched_count} document and updated {result.modified_count} document.")
# 更新多个文档
query = {"age": {"$lt": 30}}
new_values = {"$set": {"status": "active"}}
result = collection.update_many(query, new_values)
print(f"Matched {result.matched_count} documents and updated {result.modified_count} documents.")
七、删除文档
你可以使用delete_one
方法删除单个文档,或使用delete_many
方法删除多个文档。
# 删除单个文档
query = {"name": "Alice"}
result = collection.delete_one(query)
print(f"Deleted {result.deleted_count} document.")
# 删除多个文档
query = {"status": "active"}
result = collection.delete_many(query)
print(f"Deleted {result.deleted_count} documents.")
八、注意事项
-
数据类型:MongoDB支持多种数据类型,包括字符串、整数、浮点数、数组、对象、布尔值、日期等。在插入和查询数据时,需要注意数据类型的一致性。
-
安全性:在生产环境中,应使用认证连接来确保数据库的安全性。避免在代码中硬编码数据库连接信息,建议使用配置文件或环境变量来管理这些信息。
-
性能优化:合理使用索引可以显著提高查询性能。对于大量数据的插入和查询操作,可以考虑使用MongoDB的分片功能来水平扩展数据库的性能。