MongoDB数据建模
学习文档模型设计原则,包括嵌入、引用和模式设计模式。 · 难度:入门 · +15XP
数据建模基础
MongoDB 是文档数据库,数据建模重点在于如何组织文档结构。核心原则:根据访问模式(查询、更新)设计模式,而不是关系范式。
嵌入 vs 引用
- 嵌入:将相关数据放在同一文档中,适合“包含”关系(如订单包含多个商品)
- 引用:通过 ID 关联其他文档,适合多对多或经常独立更新的数据
常见设计模式
| 模式 | 场景 | 示例 |
|---|---|---|
| 单表继承 | 不同类型共享相同字段 | 产品文档包含 type 字段 |
| 子集模式 | 频繁访问的部分字段 | 用户头像单独存储 |
| 桶模式 | 时间序列数据按时间窗口分组 | 每小时聚合一次传感器数据 |
示例:博客系统建模
// 用户文档(引用文章)
{
_id: ObjectId(),
name: 'Alice',
articles: [ObjectId1, ObjectId2]
}
// 文章文档(嵌入评论)
{
_id: ObjectId1,
title: 'MongoDB建模',
body: '...',
comments: [
{ user: 'Bob', text: '好文章', date: ISODate() }
]
}练习提示: 设计一个电商订单模型,考虑订单项(商品快照)是嵌入还是引用,并说明原因。