下午好。我想设计一种数据方案,以将具有不同属性的产品存储在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中设计数据的经验。 如果您提出了自己的答案,我将非常感谢您。