【问题标题】:MongoDB schema design - multiple collections vs nested modelsMongoDB 模式设计 - 多个集合与嵌套模型
【发布时间】:2018-12-24 08:53:40
【问题描述】:

假设我有以下模型:Company & Employee

我将创建基础 CompanySchema,如下所示:

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

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

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

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

如果有做过测试或有经验的人能分享他们的智慧,那就太好了!

【问题讨论】:

    标签: mongodb mongoose


    【解决方案1】:

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

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

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

    在设计文档时,考虑预期用途很有用,即您是否总是需要加载公司的所有员工,还是需要更频繁地加载单个员工?更新它们怎么样?

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

    【讨论】:

    • 太好了,谢谢。是的,在大多数情况下,您不需要将公司和*所有员工加载到同一个请求中。
    猜你喜欢
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 2021-11-23
    • 2018-06-09
    • 2022-11-12
    • 1970-01-01
    相关资源
    最近更新 更多