与嵌入式文档构建一对多关系模型
在本页面
Overview
MongoDB 中的数据具有弹性模式。 Collections不强制执行document结构。影响数据建模方式的决策会影响应用程序性能和数据库容量。请参阅数据建模概念,以获取有关 MongoDB 中数据建模的完整概述。
本文档描述了一种数据模型,该数据模型使用embedded文档来描述所连接数据之间的关系。
Pattern
考虑以下 Map 顾客和多个地址关系的示例。该示例说明了如果您需要在另一个上下文中查看许多数据实体,则与引用相比,嵌入的优势。在patron
和address
数据之间的一对多关系中,patron
具有多个address
实体。
在规范化数据模型中,address
文档包含对patron
文档的引用。
{
_id: "joe",
name: "Joe Bookreader"
}
{
patron_id: "joe",
street: "123 Fake Street",
city: "Faketon",
state: "MA",
zip: "12345"
}
{
patron_id: "joe",
street: "1 Some Other Street",
city: "Boston",
state: "MA",
zip: "12345"
}
如果您的应用程序经常使用name
信息检索address
数据,则您的应用程序需要发出多个查询来解析引用。更好的方案是将address
数据实体嵌入到patron
数据中,如以下文档所示:
{
_id: "joe",
name: "Joe Bookreader",
addresses: [
{
street: "123 Fake Street",
city: "Faketon",
state: "MA",
zip: "12345"
},
{
street: "1 Some Other Street",
city: "Boston",
state: "MA",
zip: "12345"
}
]
}
使用嵌入式数据模型,您的应用程序可以通过一个查询来检索完整的顾客信息。