如何在Mongo中正确设计这些商品和属性的结构

时间:2018-10-04 21:48:22

标签: database mongodb database-design nosql entity-attribute-value

下午好。我想设计一种数据方案,以将具有不同属性的产品存储在mongodb中,但是我不知道如何在保持灵活性和速度的同时正确地进行操作。 例如,每个产品可能都有一个品牌,并且需要对其进行引用以及分类和显示可能的值。此外,例如,可以重命名品牌。

我可以这样存储数据:

模式2

[
  {
     name: "t-shirt",
     brand: "SampleBrand"
  },
  {
     name: "t-shirt",
     brand: "SampleBrand2"
  }
]

然后,如果我需要获得所有品牌,则必须遍历整个文档集合。 另外,如果要将“ SampleBrand”重命名为“ SampleBrand84”,则需要遍历整个集合。 我认为这很耗时。

另一种选择是使用指向带有品牌表的链接。

模式2

  

品牌[

     

{_ id:1,名称:“ SampleBrand”},

     

{_ id:2,名称:“ SampleBrand2”}   ]

     

产品[

     

{{p      

名称:“ T恤”,

     

品牌:1

     

},

     

{{p      

名称:“ T恤”,

     

品牌:2

     

}]

然后,我可以在一个地方更改品牌名称,以便在任何地方进行更改。 但是现在,每当对产品提出要求时,我都需要进行$ lookup以获取品牌名称, 增加产品的属性数量将大大增加mongo的负担。

我还可以使用模式2表获取模式1形式的副本,并同时获得这两种选择的优点, 但是尚不清楚如何正确地彼此同步。

建议正确的做法?

也对使用多种语言和EAV模型类似物(来自关系数据库)的可能性感兴趣, 也就是说,当可能存在数目不一的具有不同名称和特定属性列表的属性 (如果需要,我会写一个例子)

请分享您在mongodb中设计数据的经验。 如果您提出了自己的答案,我将非常感谢您。

0 个答案:

没有答案
相关问题