MongoDB
MongoDB 是以 BSON 文档为基本记录单位的数据库。文档可以包含嵌套对象和数组,查询、索引、聚合、复制与分片都围绕文档模型展开。
MongoDB 并不是“无需设计结构的 JSON 存储”。它把部分关系和聚合边界放入文档内部,以减少运行时连接并让相关数据共同读写;代价是文档大小、重复数据、更新模式和分片键需要在建模阶段明确设计。
文档目录
| 文档 | 内容 |
|---|---|
| 产品特性与边界 | BSON、文档模型、适用场景和不适用边界 |
| 体系结构与物理存储 | mongod、WiredTiger、缓存、Checkpoint、Journal 和 Oplog |
| 文档建模 | 聚合边界、嵌入与引用、Schema Validation 和模型模式 |
| 查询与聚合 | Filter、Projection、Update Operator 和 Aggregation Pipeline |
| 索引类型与结构 | B-tree、复合、Multikey、TTL、Wildcard、Text、Geo 和 Hashed |
| 一致性与事务 | 原子性、Read Concern、Write Concern、Session 和多文档事务 |
| 复制集与高可用 | Primary、Secondary、Oplog、选举、回滚和读偏好 |
| 分片架构 | Shard Key、Chunk、Balancer、mongos 和热点治理 |
| 备份与恢复 | 单机恢复、复制集备份、快照一致性和恢复验证 |
| 查询语法入门 | 以 MySQL 为参照的 CRUD、关联、聚合和分页写法 |
术语映射
| MySQL | MongoDB | 边界 |
|---|---|---|
| Database | Database | 都是对象命名与权限边界,但内部机制不同 |
| Table | Collection | Collection 可启用 Schema Validation,不等于永久无模式 |
| Row | Document | Document 可包含嵌套对象和数组 |
| Column | Field | 同一 Collection 的文档可以缺少某个 Field |
| Primary Key | _id | 每个普通文档必须有唯一 _id |
| Index | Index | MongoDB 索引项通常指向文档记录,数组会展开为 Multikey |
| JOIN | $lookup 或引用查询 | 可用但不应照搬关系模型的大量运行时连接 |
| GROUP BY | $group | 位于 Aggregation Pipeline 中 |