MongoDB从零开始详细教程 核心概念与原理 环境搭建 基础操作
- 一、核心概念与原理
- 1. 核心组件
- 2. MongoDB vs 关系型数据库
- 二、环境搭建(Windows/Linux/CentOS)
- 1. Windows安装
- 2. CentOS安装
- 3. 连接验证
- 三、基础操作(CRUD)
-
- 四、高级特性与优化
- 1. 索引优化
- 2. 聚合管道(Aggregation)
- 3. 分片集群与副本集
- 五、编程语言集成(Node.js/Python)
- 1. Node.js操作MongoDB
- 2. Python操作MongoDB(PyMongo)
- 六、运维与监控
-
- 学习路径
一、核心概念与原理
1. 核心组件
概念 | 作用 | 类比关系型数据库 |
---|
文档(Document) | 数据存储基本单元,采用BSON格式(如JSON) | 表中的一行数据 |
集合(Collection) | 文档的容器,无需固定结构(Schema-less) | 数据表(Table) |
数据库(Database) | 多个集合的命名空间容器 | 数据库(Database) |
2. MongoDB vs 关系型数据库
特性 | MongoDB | MySQL |
---|
数据结构 | 灵活(动态Schema) | 固定结构(需预定义字段) |
扩展方式 | 水平扩展(分片集群) | 垂直扩展(升级硬件) |
查询语言 | 类JavaScript语法 | SQL |
适用场景 | 非结构化数据、快速迭代、高并发读写 | 强事务、复杂关联查询 |
BSON优势:二进制JSON,支持日期、二进制流等类型,存储效率高于JSON。
二、环境搭建(Windows/Linux/CentOS)
1. Windows安装
2. CentOS安装
sudo mkdir -p /data/db
sudo chown -R mongodb:mongodb /data/db
sudo yum install -y mongodb-org
sudo systemctl start mongod
3. 连接验证
mongo
> db.version()
> show dbs
三、基础操作(CRUD)
1. 数据库与集合操作
use testdb
db.createCollection("users")
db.users.drop()
db.dropDatabase()
2. 文档增删改查
db.users.insertOne({name: "Alice", age: 25})
db.users.insertMany([{name: "Bob"}, {name: "Charlie"}])
db.users.find()
db.users.find({age: {$gt: 20}})
db.users.findOne({name: "Alice"})
db.users.updateOne({name: "Alice"}, {$set: {age: 26}})
db.users.updateMany({}, {$inc: {age: 1}})
db.users.deleteOne({name: "Bob"})
db.users.deleteMany({age: {$lt: 18}})
四、高级特性与优化
1. 索引优化
索引类型 | 创建命令 | 适用场景 |
---|
单键索引 | db.users.createIndex({age: 1}) | 频繁按age查询 |
复合索引 | db.users.createIndex({name:1, age:-1}) | 多字段排序或条件查询 |
TTL索引 | db.logs.createIndex({time:1}, {expireAfterSeconds:3600}) | 自动清理过期数据(如日志) |
2. 聚合管道(Aggregation)
db.users.aggregate([{ $group: { _id: "$age", count: {$sum: 1} }},{ $sort: {count: -1} }
])
3. 分片集群与副本集
- 副本集:一主多从架构,主节点处理写请求,从节点提供读负载均衡,自动故障转移。
- 分片集群:通过分片键(如user_id)将数据分布到多台机器,解决海量数据存储问题。
五、编程语言集成(Node.js/Python)
1. Node.js操作MongoDB
const { MongoClient } = require('mongodb');
const uri = "mongodb://localhost:27017";async function run() {const client = new MongoClient(uri);await client.connect();const db = client.db('testdb');const users = db.collection('users');await users.insertOne({ name: "Eva", role: "admin" });const result = await users.find({ role: "admin" }).toArray();console.log(result);
}
run();
2. Python操作MongoDB(PyMongo)
from pymongo import MongoClientclient = MongoClient('mongodb://localhost:27017')
db = client['testdb']
users = db['users']
users.insert_many([{"name": "Tom", "score": 85},{"name": "Jerry", "score": 92}
])
results = users.find({"score": {"$gt": 90}})
for doc in results:print(doc)
六、运维与监控
1. 备份与恢复
mongodump --db testdb --out /backup/
mongorestore --db testdb /backup/testdb/
2. 性能监控命令
db.serverStatus()
db.currentOp()
db.stats()
3. 安全配置
security:authorization: enabled
use admin
db.createUser({user: "admin",pwd: "password",roles: ["root"]
})
学习路径
- 新手阶段:掌握CRUD操作 + 理解BSON文档模型
- 进阶方向:
- 索引设计优化(避免全表扫描)
- 聚合管道处理复杂分析
- 分片集群应对海量数据
- 生产实践:
- 副本集保障高可用
- 编程语言集成(Node.js/Python优先)
官方资源:
- MongoDB中文手册
- MongoDB中文社区
工具推荐:
- 可视化工具:MongoDB Compass
- 性能分析:mongostat、mongotop
按此路径学习,可逐步从入门到精通,应对企业级应用开发与运维需求。