NoSQL重复数据或新文档

时间:2017-12-10 11:02:36

标签: mongodb performance nosql

我正在搞乱MongoDB,我想知道什么是最好的解决方案:我有一个动物集合,每只动物都有一个名字和类型。

但对于前端需求,每种类型都有一种颜色。

所以有两种可能性:

第一个:

Animal
  .animal 1
    name: Simba
    race: lion
    type:
        name: felin
        color: blue
  .animal 2
    name: Franck
    race: turtle
    type:
        name: turtle
        color: red
  .animal 3
    name: Francis
    race: turtle
    type:
        name: turtle
        color: red

第二:

Animal
  .animal 1
    name: Simba
    race: lion
    type: (id of type collection)
Type
  .type 1
    name: felin
    color: blue
  .type 2
    name: turtle
    color: red

那么,我应该复制数据吗?或者我应该创建一个新的集合?

谢谢你的时间!

2 个答案:

答案 0 :(得分:0)

我更喜欢第一种方法,因为类型键只有2个子键。当我有更多的键时,我更喜欢新的集合,因为它涉及数据库操作。

答案 1 :(得分:0)

如果您的type文档不会经常更改,并且仅限于其中的2-3个属性,则第一种方法会更好。

但是,如果您计划在type文档中添加更多属性,则应考虑创建新集合并将type-id存储在animals集合中。

此外,如果您的type文档将来会频繁更改,您不希望更新animals中包含type的所有记录,而不是您希望仅在1个地方(type集合)更改它。