mongodb嵌入式文档:嵌入式较少的大型文档或嵌入式较少的小文档

时间:2014-07-31 10:03:33

标签: mongodb database-design nosql

以下是我的案例:

有3家工厂A,B和C.

他们每个人生产相同的30种产品:P1,P2,...... P3

该文件有两种可能的结构:

{
id: 1,
base: 'A',
date: '01/01/2014',
products:
   [
   {name:'P1', quantity:20, weight:4},
   {name:'P2', quantity:19, weight:5},
   ...
   {name:'P30', quantity:25, weight:6}
   ]
}

{
id: 1,
product: 'P1',
date: '01/01/2014',
bases:
   [
   {name:'A', quantity:20, weight:4},
   {name:'B', quantity:19, weight:5},
   {name:'C', quantity:25, weight:6}
   ]
}

不同之处在于文档总数和嵌入文档数。

实际上,为方便使用该文件,对我来说并没有太大的区别。

我想问一下MongoDB中这两种结构之间的优缺点是什么,它会对性能产生重大影响。

对于每一天,都会有:

  1. 三个文件,每个文件有30个嵌入文件作为第一个条件 OR
  2. 30个文件,每个文件有3个嵌入文件作为第二个条件
  3. 通常,任务只是:

    1. 计算一段时间内每种产品的数量总和
    2. 计算一段时间内每个基地的产量总和
    3. 检查给定日期的基地的生产细节(输出类似 到第一个条件结构)
    4. 检查a的制作细节 给定日期的产品(输出类似于第二天 条件结构)
    5. 提前致谢。

1 个答案:

答案 0 :(得分:0)

  

三个文件,每个文件都有30个嵌入文件作为第一个条件OR

我在这里看到的唯一区别是,作为嵌入式文档(第一个模式),您可能会在MongoDBs文档填充的默认设置上出现碎片,启用powerof2sizes http://docs.mongodb.org/manual/reference/command/collMod/#usePowerOf2Sizes,当然如果您使用的是v2 .6+然后此设置已经开启,您将看不到任何差异。

  

计算一段时间内每种产品的数量总和

然而,这是第二个架构所青睐的:

  

计算一段时间内每个基数的生产数量之和

     

检查给定日期的基数的生产细节(输出类似于第一个条件结构)

     

检查给定日期产品的生产细节(输出类似于第二个条件结构

实际上是第一个受到基础的支持。

所以目前我会先说,因为填写查询会更容易。