🚀 NoSQL 革命
MongoDB 是最流行的 NoSQL 数据库之一。根据 DB-Engines 排名,MongoDB 长期位居 NoSQL 数据库第一名。
#1
NoSQL 数据库排名
45%
开发者使用率
100M+
下载量
10,000+
企业用户
关系型 vs 文档型数据库
🗄️ 关系型数据库(MySQL/PostgreSQL)
✅优点:ACID 事务、SQL 标准、复杂查询
❌缺点:schema 僵化、扩展困难、ORM 复杂
📊适用场景:金融、ERP、强一致性系统
VS
📦 MongoDB(文档型数据库)
✅优点:灵活 schema、易扩展、高性能、JSON 原生
❌缺点:无多表 JOIN、事务支持有限、内存占用大
📊适用场景:内容管理、实时分析、IoT、移动后端
💡 独特观点
MongoDB 的真正价值不是"替代 MySQL",而是处理半结构化数据和快速迭代。当你的数据结构经常变化,或者需要存储复杂的嵌套对象时,MongoDB 是更好的选择。
🏗️ MongoDB 架构
理解 MongoDB 的架构是掌握其核心的基础。
1. 逻辑架构
MongoDB 实例(Instance)
mongod 进程,可以包含多个数据库
↓
数据库(Database)
类似 MySQL 的 database,物理上存储在磁盘
↓
集合(Collection)
类似 MySQL 的 table,但无需预定义 schema
↓
文档(Document)
类似 MySQL 的 row,但存储为 BSON(Binary JSON)
📝 MongoDB 文档示例
// 用户文档(嵌套结构)
{
"_id": ObjectId("507f1f77bcf86cd799439011"),
"username": "alice123",
"email": "[email protected]",
"age": 25,
"orders": [
{
"orderId": "ORD-2024-001",
"total": 299.99,
"items": [
{ "productId": "P-1001", "quantity": 2 }
],
"createdAt": ISODate("2024-01-05T10:30:00Z")
}
],
"address": {
"city": "北京",
"street": "中关村大街"
},
"tags": ["VIP", "活跃用户"],
"createdAt": ISODate("2024-01-01T08:00:00Z")
}2. 存储引擎:WiredTiger
MongoDB 3.2+ 默认使用 WiredTiger 存储引擎。它的核心特性:
压缩
数据压缩(Snappy、Zlib、Zstd)
节省 50-70% 存储空间
文档级锁
并发性能远超表级锁
支持 数万 QPS
缓存
内置 Cache(默认 50% 内存)
智能 LRU 淘汰
Journal 日志
WAL(Write-Ahead Log)
崩溃恢复保障
WiredTiger 性能数据
- 读性能:110,000 QPS(单节点)
- 写性能:81,000 QPS(单节点)
- 压缩比:1.5:1 ~ 4:1(取决于数据)
- 内存管理:Cache 大小可调(默认 50% RAM)
📝 总结与展望
MongoDB 是现代应用架构的重要组成部分。通过本文的学习,你应该掌握了:
🎯 核心要点
- NoSQL vs 关系型:灵活 schema、易扩展、高性能
- 架构:实例 → 数据库 → 集合 → 文档(BSON)
- 文档设计:嵌入式(1:1、1:N 小)、引用式(1:N 大、N:M)
- CRUD 操作:insertOne/Many、find、updateOne/Many、deleteOne/Many
- 索引优化:单字段、复合、多键、文本、地理位置
- 聚合管道:$match、$group、$sort、$lookup(类似 JOIN)
- 高可用:复制集(自动故障转移)、分片集群(水平扩展)
- 事务:单文档(自动)、多文档(需要 session)
- Mongoose:Schema 定义、Middleware、虚拟字段、Population
- 性能调优:索引、Projection、批量操作、连接池
🚀 未来展望
MongoDB 生态正在快速演进,值得关注的方向:
- MongoDB 7.0+:更强的事务支持、更好的分片性能
- MongoDB Atlas:全托管云服务,内置全文搜索、数据分析
- MongoDB Realsm:移动端实时数据库(类似 Firebase)
- Serverless:按需计费,自动扩缩容
- HTAP:混合事务/分析处理(Atlas OLAP)