进入MongoDB中文手册(4.2版本)目录
有效的数据模型可满足您的应用程序需求。文档结构考虑因素的关键是决定使用嵌入还是使用引用 。
1 嵌入式数据模型
使用MongoDB,您可以将相关数据嵌入单个结构或文档中。这些模式通常称为“非规范化”模型,并能利用MongoDB的丰富的文档。考虑下图:
嵌入式数据模型允许应用程序将相关信息存储在同一数据库记录中。结果,应用程序可能需要发出较少的查询和更新来完成常见的操作。
通常,在以下情况下使用嵌入式数据模型:
- 在实体之间具有“包含”关系。请参阅 使用嵌入式文档的一对一模型。
- 在实体之间存在一对多关系。在这些关系中,“多”或子文档始终与“一”或父级文档一起出现或在上下文中查看。请参阅使用嵌入式文档的一对多模型。
通常,嵌入可为读取操作提供更好的性能,以及在单个数据库操作中请求和检索相关数据的能力。嵌入式数据模型使在单个原子写入操作中更新相关数据成为可能。
要访问嵌入文档中的数据,请使用点符号 “进入”嵌入文档。有关访问数组和嵌入式文档中的数据的更多示例,请参见在数组中查询数据和在嵌入式文档中查询数据。
1.1 嵌入式数据模型和文件大小限制
MongoDB中的文档必须小于BSON文档的最大大小。
对于批量二进制数据,请考虑GridFS。
2 规范化设计模型
规范化的数据模型使用文档之间的引用来描述关系。
通常,使用规范化的数据模型:
- 嵌入时将导致数据重复,但无法提供足够的读取性能优势,且读取性能的优势无法胜过重复的影响。
- 代表更复杂的多对多关系。
- 为大型分层数据集建模。
为了连接(join )集合,MongoDB提供了聚合阶段:
- $lookup (从MongoDB 3.2开始可用)
- $graphLookup (从MongoDB 3.4开始可用)
MongoDB还提供了可以跨集合联接数据的引用。
有关规范化数据模型的示例,请参阅 一对多关系模型的文档参考。
有关各种树模型的示例,请参见树结构模型。
3 进一步阅读
有关使用MongoDB进行数据建模的更多信息,请下载《 MongoDB应用程序现代化指南》。
下载内容包括以下资源:
- 演示使用MongoDB进行数据建模的方法
- 白皮书涵盖了从RDBMS数据模型迁移到MongoDB的最佳实践和注意事项
- 参考MongoDB架构及其等效的RDBMS
- 应用程序现代化记分卡