考虑我有以下型号:公司& 员工
我会创建基本 CompanySchema ,如下所示:
{
"CompanyId":Guid,
"Name":String,
"IconUrl":String,
"Employees":[{
"EmployeeId":Guid,
"Name":String,
"EmployeeIds":[]
}]
}
因此,员工将处于嵌套集合中,他们需要与其他员工建立直接关系(连接)。
例如,如果员工每家公司可以获得超过50,000条记录。我会更好地拥有2个独立的集合或1个嵌套集合吗?
如果有2个收藏品 我可以缓存公司在查找员工时使用IconUrl。我也想对跨公司的员工进行排序。
如果任何已经完成测试或有过经验的人都可以分享他们的智慧,那就太棒了!
答案 0 :(得分:2)
在您的示例中,创建两个单独的集合可能更有意义。
嵌入文档在某些情况下非常有用,但它不是灵丹妙药。 MongoDB的limit on a document size为每个文档16 MB。因此,如果你知道你的数组将包含很多子文档,那么将它分成两个集合可能更明智。
此外,使用嵌入式文档并不像普通文档那样简单(例如,分页和更新多个子文档)
当您设计文档时,考虑预期用途是有用的,即您是否总是需要为公司加载所有员工,或者您是否需要更频繁地加载个别员工?如何更新它们?
您可以在MongoDB文档上阅读有关Data Modeling的更多信息。