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 按此路径学习,可逐步从入门到精通,应对企业级应用开发与运维需求。