1. MongoDB简介
MongoDB是一款基于文档的NoSQL数据库,它由C++编写,支持Windows、Linux、OS X等平台。MongoDB提供了丰富的功能,包括高可用性、分片、副本集等,非常适合处理大规模数据。
1.1 MongoDB的特点
- 文档存储:以JSON格式存储数据,结构灵活。
- 高可用性:支持副本集和分片,保证数据的安全和可靠。
- 扩展性强:支持水平扩展,易于扩展数据存储能力。
- 易于使用:使用Python进行操作,简单方便。
2. 安装MongoDB
2.1 Windows平台安装
- 访问MongoDB官网(https://www.mongodb.com/download-center#community)下载适合Windows平台的MongoDB安装包。
- 解压安装包,双击运行
mongod.exe开始安装。 - 根据提示完成安装。
2.2 Linux平台安装
- 使用以下命令安装MongoDB:
sudo apt-get install mongodb
- 启动MongoDB服务:
sudo systemctl start mongod
3. Python集成MongoDB
Python集成MongoDB主要使用pymongo库。以下是安装和基本使用方法。
3.1 安装pymongo
pip install pymongo
3.2 基本使用
from pymongo import MongoClient
# 连接MongoDB
client = MongoClient('localhost', 27017)
# 选择数据库
db = client['test']
# 选择集合
collection = db['users']
# 添加数据
collection.insert_one({'name': 'Alice', 'age': 25})
# 查询数据
for item in collection.find():
print(item)
4. 数据库实战指南
4.1 创建数据库和集合
db.create_collection('products')
4.2 添加数据
collection.insert_one({'name': 'Product1', 'price': 100.0})
4.3 查询数据
for item in collection.find({'price': {'$gte': 50.0}}):
print(item)
4.4 更新数据
collection.update_one({'name': 'Product1'}, {'$set': {'price': 120.0}})
4.5 删除数据
collection.delete_one({'name': 'Product1'})
5. 高级应用
5.1 副本集
在MongoDB中,副本集是一个由多个MongoDB实例组成的集群,用于提高可用性和数据冗余。
- 启动两个MongoDB实例:
mongod --replSet rs0 --port 27017
mongod --replSet rs0 --port 27018
- 在主实例上初始化副本集:
mongo --port 27017
db.replSet.initiate({'_id': 'rs0', 'members': [{'_id': 0, 'host': 'localhost:27017'}, {'_id': 1, 'host': 'localhost:27018'}]})
- 使用副本集:
client = MongoClient('localhost', 27017, replicaSet='rs0')
5.2 分片
MongoDB分片可以将数据分散存储到多个服务器,提高数据存储和查询性能。
- 配置分片服务器:
mongod --port 27017 --dbpath /data1/data --shardsvr
mongod --port 27018 --dbpath /data2/data --shardsvr
- 创建分片集:
mongo --port 27017
db.runCommand({'splitVector': 'products', 'middle': {'_id': 1}})
- 添加分片:
mongo --port 27017
sh.addShard('localhost:27017')
sh.addShard('localhost:27018')
- 使用分片:
client = MongoClient('localhost', 27017, replicaSet='rs0', shardsvr=True)
6. 总结
本文介绍了如何使用Python集成MongoDB,包括安装、基本使用、高级应用等内容。通过本文的学习,您可以轻松地将MongoDB应用于实际项目中。
