文档菜单
文档首页
/
MongoDB 手册
/ /

嵌入式数据与引用

本页内容

  • 嵌入式数据模型
  • 用例
  • 查询嵌入式数据
  • 引用
  • 用例
  • 查询规范化数据模型
  • 了解更多

有效的数据模型支持您的应用需求。您模式设计的关键决策之一是是否嵌入数据使用引用。

您可以在单个文档中嵌入相关数据。在下面的例子中,联系访问字段是嵌入文档

Data model with embedded fields that contain all related information.

嵌入式数据模型通常是非规范化的,因为频繁访问的数据在多个集合中重复。

嵌入式数据模型允许应用程序在同一数据库记录中查询相关信息。因此,应用程序在完成常见操作时需要更少的查询和更新。

以下场景中可以使用嵌入式数据模型

  • 实体之间存在“包含”关系。例如,一个包含地址联系文档。参见使用嵌入式文档建模一对一关系.

  • 实体之间存在一对一关系。在这些关系中,“多”或子文档是在“一”或父文档的上下文中查看的。参见使用嵌入式文档建模一对一关系。

嵌入提供以下好处

  • 读取操作性能更优

  • 能够在单个数据库操作中检索相关数据

  • 能够在单个原子写操作中更新相关数据

要查询嵌入式文档中的数据,请使用点符号。有关查询数组中数据以及嵌入式文档的示例,请参阅

注意

文档大小限制

MongoDB中的文档大小必须小于16兆字节。

对于大型二进制数据,请考虑使用GridFS。

参考文献通过包含从一份文档到另一份文档的链接,即所谓的引用,来存储数据之间的关系。在以下示例中,contactaccess文档包含对user文档的引用。

Data model using references to link documents. Both the ``contact`` document and the ``access`` document contain a reference to the ``user`` document.

参考文献导致数据模型规范化,因为数据被分割成多个集合,而不是重复。

在以下场景中,请使用引用来链接相关数据

  • 嵌入会导致数据重复,但不会提供足够的读取性能优势来抵消重复的影响。例如,当嵌入的数据频繁变化时。

  • 您需要表示复杂的许多对多关系或大型层次数据集。

  • 相关的实体经常单独查询。例如,如果您有 employeedepartment 数据,您可以考虑在 employee 文档中嵌入部门信息。但是,如果您经常查询部门列表,您的应用程序使用与 employee 收集相连的单独的 department 收集将表现最佳。

要查询多个集合中的规范化数据,MongoDB 提供以下聚合阶段

有关规范化数据模型的示例,请参阅 使用文档引用建模一对一关系。

有关各种树模型的示例,请参阅 建模树结构。

有关使用 MongoDB 进行数据建模的更多信息,请下载 MongoDB 应用程序现代化指南

下载内容包含以下资源

  • MongoDB 数据建模方法的演示文稿

  • 关于从 RDBMS 数据模型迁移到 MongoDB 的最佳实践和考虑的论文

  • 包含其 RDBMS 相应方案的 MongoDB 引用模式

  • 应用程序现代化评分卡

返回

数据建模概念

© . All rights reserved.