Docs 菜单
Docs 主页
/ /

在MongoDB模式中嵌入数据

嵌入式文档在单一文档结构中存储相关数据。文档可以包含具有相关数据的数组和子文档。这些非规范化数据模型允许应用程序在单个数据库操作中检索相关数据。

在以下示例中,contactaccess 字段是嵌入式文档:

具有包含所有相关信息的嵌入式字段的数据模型。

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

嵌入式数据模型允许应用程序查询同一数据库记录中的相关信息。因此,嵌入具有以下优点:

  • 读取操作性能更佳

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

  • 在单次原子写入操作中更新相关数据的能力

嵌入式文档在单一文档结构中存储相关数据。文档可以包含具有相关数据的数组和子文档。这些非规范化数据模型允许应用程序在单个数据库操作中检索相关数据。

注意

文档大小限制

MongoDB中的文档必须小于 16 MB。

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

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

如果您的集合包含大量小文档,请考虑嵌入以提高性能。如果您可以按某种逻辑关系对这些小文档群组,并且您经常按此分组检索这些文档,则可以考虑将这些小文档“汇总”为包含一组嵌入式文档的较大大量。

将这些小文档“汇总”为逻辑分组意味着检索一组文档的查询涉及顺序读取和较少的随机磁盘访问。此外,“汇总”文档并将通用字段移动到较大的文档有利于这些字段的索引。通用字段的副本较少,并且相应索引中的关联键条目也较少。有关索引的更多信息,请参阅索引

但是,如果您经常只需要检索群组内文档的子集,那么“汇总”文档可能无法提供更好的性能。此外,如果较小、单独的文档代表数据的自然模型,则应当保留该模型。

如要查询嵌入文档中的数据,请使用点表示法。有关在数组和嵌入文档中查询数据的示例,请参阅:

后退

最佳实践

获得技能徽章

免费掌握“关系到文档模型”!

了解详情

在此页面上