嵌入式数据与引用
有效的数据模型支持您的应用需求。您模式设计的关键决策之一是是否嵌入数据 或 使用引用。
嵌入式数据模型
您可以在单个文档中嵌入相关数据。在下面的例子中,联系和访问字段是嵌入文档
嵌入式数据模型通常是非规范化的,因为频繁访问的数据在多个集合中重复。
嵌入式数据模型允许应用程序在同一数据库记录中查询相关信息。因此,应用程序在完成常见操作时需要更少的查询和更新。
用例
以下场景中可以使用嵌入式数据模型
实体之间存在“包含”关系。例如,一个包含
地址的联系文档。参见使用嵌入式文档建模一对一关系.实体之间存在一对一关系。在这些关系中,“多”或子文档是在“一”或父文档的上下文中查看的。参见使用嵌入式文档建模一对一关系。
嵌入提供以下好处
读取操作性能更优
能够在单个数据库操作中检索相关数据
能够在单个原子写操作中更新相关数据
查询嵌入式数据
要查询嵌入式文档中的数据,请使用点符号。有关查询数组中数据以及嵌入式文档的示例,请参阅
参考文献
参考文献通过包含从一份文档到另一份文档的链接,即所谓的引用,来存储数据之间的关系。在以下示例中,contact和access文档包含对user文档的引用。
参考文献导致数据模型规范化,因为数据被分割成多个集合,而不是重复。
用例
在以下场景中,请使用引用来链接相关数据
嵌入会导致数据重复,但不会提供足够的读取性能优势来抵消重复的影响。例如,当嵌入的数据频繁变化时。
您需要表示复杂的许多对多关系或大型层次数据集。
相关的实体经常单独查询。例如,如果您有
employee和department数据,您可以考虑在employee文档中嵌入部门信息。但是,如果您经常查询部门列表,您的应用程序使用与employee收集相连的单独的department收集将表现最佳。
查询规范化的数据模型
要查询多个集合中的规范化数据,MongoDB 提供以下聚合阶段
有关规范化数据模型的示例,请参阅 使用文档引用建模一对一关系。
有关各种树模型的示例,请参阅 建模树结构。
了解更多信息
有关使用 MongoDB 进行数据建模的更多信息,请下载 MongoDB 应用程序现代化指南。
下载内容包含以下资源
MongoDB 数据建模方法的演示文稿
关于从 RDBMS 数据模型迁移到 MongoDB 的最佳实践和考虑的论文
包含其 RDBMS 相应方案的 MongoDB 引用模式
应用程序现代化评分卡