MongoDB 知识体系概览
MongoDB 是什么
MongoDB 是最流行的 文档型 NoSQL 数据库,以 JSON-like 的 BSON 文档作为数据存储格式。与关系型数据库的行列表模型不同,MongoDB 允许灵活的、嵌套的文档结构,特别适合 快速迭代的应用开发、半结构化数据 和 大数据量高并发 场景。
核心特点
| 特性 | 说明 |
|---|---|
| 文档模型 | BSON 格式,支持嵌套文档和数组,无需预定义 Schema |
| 高性能 | 内置内存映射、WiredTiger 存储引擎、索引优化 |
| 高可用 | 副本集(Replica Set)自动故障转移 |
| 水平扩展 | 原生分片(Sharding),自动数据分布和均衡 |
| 丰富查询 | 支持二级索引、聚合管道、全文搜索、地理空间查询 |
| 事务支持 | 4.0+ 支持多文档 ACID 事务 |
MongoDB vs 关系型数据库概念映射
| 关系型 | MongoDB | 说明 |
|---|---|---|
| Database | Database | 数据库 |
| Table | Collection | 集合(表) |
| Row | Document | 文档(行) |
| Column | Field | 字段(列) |
| Index | Index | 索引 |
| JOIN | $lookup / 嵌入 | 关联查询 / 内嵌文档 |
| Primary Key | _id | 自动生成的唯一标识 |
为什么面试要考 MongoDB
- NoSQL 必备:MongoDB 是最主流的 NoSQL 数据库,几乎是面试中 NoSQL 话题的代表
- Schema 设计能力:文档模型的设计理念与关系型截然不同,考察候选人的数据建模能力
- 分布式基础:副本集和分片是分布式数据库的经典实现,理解它们有助于理解更广泛的分布式概念
- 实际应用广泛:日志收集、实时分析、内容管理、IoT 等场景大量使用 MongoDB
知识体系总览
MongoDB 核心知识点
1. 文档模型与 Schema 设计
MongoDB 最根本的特征是 文档模型。理解何时使用嵌入、何时使用引用,是 MongoDB 面试的核心考点:
- BSON 格式:Binary JSON,支持更多数据类型(ObjectId、Date、Decimal128 等)
- Schema 设计模式:嵌入 vs 引用、反范式化、数据冗余权衡
- 设计原则:读写比、数据访问模式、文档大小限制(16MB)
2. CRUD 操作
MongoDB 的查询语言是基于文档的,非 SQL 语法:
- 查询操作符:
$eq、$gt、$in、$and、$or、$elemMatch等 - 更新操作符:
$set、$inc、$push、$pull、$addToSet等 - 投影:选择返回的字段,类似 SQL 的 SELECT 列
3. 聚合框架
聚合管道(Aggregation Pipeline)是 MongoDB 最强大的数据处理能力:
- Pipeline 阶段:
$match→$group→$sort→$project $lookup:类似 SQL 的 LEFT JOIN,跨集合关联查询$unwind:展开数组字段,配合$group做统计
4. 索引策略
索引直接决定查询性能,是面试重点:
- 索引类型:单字段、复合、多键、文本、地理空间、哈希
- ESR 规则:Equality → Sort → Range,复合索引字段顺序的黄金法则
- 索引优化:
explain()分析、覆盖查询、索引选择性
5. 分片与副本集
分布式能力是 MongoDB 的核心优势:
- 副本集:Primary + Secondary + Arbiter,自动选主,数据冗余
- 分片:Range / Hashed / Zone 分片策略,Shard + Config Server + Mongos 架构
- Read/Write Concern:一致性级别控制
面试重点与高频考点
面试核心
- 文档模型 vs 关系模型:什么场景用 MongoDB,什么场景用 MySQL?
- Schema 设计:嵌入 vs 引用的选择原则
- 聚合管道:用 Pipeline 实现复杂统计
- 索引优化:ESR 规则、explain 分析
- 副本集与分片:高可用和水平扩展方案
- 事务:4.0+ 多文档事务的使用场景和限制
学习路径建议
- 先理解文档模型:这是 MongoDB 与关系型数据库最本质的区别
- 掌握 CRUD:基本操作和查询操作符
- 深入聚合框架:这是 MongoDB 最强大的数据分析能力
- 索引优化:性能调优的核心手段
- 分布式架构:副本集和分片的原理与实践