与嵌入式文档构建一对一关系模型

在本页面

Overview

MongoDB 中的数据具有弹性模式Collections不强制执行document结构。影响数据建模方式的决策会影响应用程序性能和数据库容量。请参阅数据建模概念,以获取有关 MongoDB 中数据建模的完整概述。

本文档描述了一种数据模型,该数据模型使用embedded文档来描述所连接数据之间的关系。

Pattern

考虑以下 Map 顾客和地址关系的示例。该示例说明了如果需要在另一个数据实体的上下文中查看一个数据实体,则与引用相比,嵌入的优势。在patronaddress数据之间的这种一对一关系中,address属于patron

在规范化数据模型中,address文档包含对patron文档的引用。

{
   _id: "joe",
   name: "Joe Bookreader"
}

{
   patron_id: "joe",
   street: "123 Fake Street",
   city: "Faketon",
   state: "MA",
   zip: "12345"
}

如果经常使用name信息检索address数据,则通过引用,您的应用程序需要发出多个查询来解析引用。更好的数据模型是将address数据嵌入patron数据,如以下文档所示:

{
   _id: "joe",
   name: "Joe Bookreader",
   address: {
              street: "123 Fake Street",
              city: "Faketon",
              state: "MA",
              zip: "12345"
            }
}

使用嵌入式数据模型,您的应用程序可以通过一个查询来检索完整的顾客信息。