我应该在Mongodb中选择哪个,创建新的集合或嵌入集合

时间:2017-01-29 11:56:53

标签: mongodb

请说我想使用Mongodb设计一个新的数据库,其功能如下:     

    {[
    name:company1, 
    password:123,
    type:company,
    .
    .
    .
    categories{
    Mobile device, 
    Computer devices
    ],
    [
    name:ihab salem,
    password:123,
    type:user,
    .
    .
    .
    intersted_category{
    Home Appliance,
    Mobile Devices
    }]
    .
    .
    .
    }
    
在这种情况下我应该如上所述使用Embed Colection,或者我应该将它们分成多个集合"类别的集合,用户的另一个集合以及公司的另一个集合......等等#34;。

1 个答案:

答案 0 :(得分:1)

这在很大程度上取决于您的数据以及您将如何使用它。 This thread对一般规则有一个很好的解释。在这里你可以找到official recommendations。 不久:

  • 通常,嵌入为您提供了更好的读取操作性能
  • 写入操作将是嵌入式文档的原子
  • 在一个文档中嵌入相关数据可能会导致文档在创建后增长的情况 - can impact write performance
  • 如果您的数据计划用于不同的集合 - 使用参考模型,您只需要在一个地方更新它们
  • 复杂的层次结构可以更灵活地使用引用
  • 使用引用,客户端应用程序可能需要多次往返服务器
  • 更新对于多个文档来说不是原子的,所以你 在使用引用时应该考虑数据的一致性 模型

所以,在你的情况下,我尽可能多地放入一份文件,特别是如果你的embedded documents are small ones - 直到那里它可能会破坏"自然"您的系统或嵌入式文档的数据模型往往会快速增长。