MongoDB架构设计 - 多个集合与嵌套模型

时间:2014-06-20 07:13:45

标签: mongodb mongoose

考虑我有以下型号:公司& 员工

我会创建基本 CompanySchema ,如下所示:

{
  "CompanyId":Guid,
  "Name":String,
  "IconUrl":String,
  "Employees":[{
      "EmployeeId":Guid,
      "Name":String,
      "EmployeeIds":[]
  }]
}

因此,员工将处于嵌套集合中,他们需要与其他员工建立直接关系(连接)。

例如,如果员工每家公司可以获得超过50,000条记录。我会更好地拥有2个独立的集合或1个嵌套集合吗?

如果有2个收藏品 我可以缓存公司在查找员工时使用IconUrl。我也想对跨公司的员工进行排序。

如果任何已经完成测试或有过经验的人都可以分享他们的智慧,那就太棒了!

1 个答案:

答案 0 :(得分:2)

在您的示例中,创建两个单独的集合可能更有意义。

嵌入文档在某些情况下非常有用,但它不是灵丹妙药。 MongoDB的limit on a document size为每个文档16 MB。因此,如果你知道你的数组将包含很多子文档,那么将它分成两个集合可能更明智。

此外,使用嵌入式文档并不像普通文档那样简单(例如,分页和更新多个子文档)

当您设计文档时,考虑预期用途是有用的,即您是否总是需要为公司加载所有员工,或者您是否需要更频繁地加载个别员工?如何更新它们?

您可以在MongoDB文档上阅读有关Data Modeling的更多信息。