我一直在开发EAV(实体属性值)Web应用程序。
我想使用mongo的主要原因是它是无模式的,即在没有不必要的字段的情况下很容易找到具有“颜色”属性的汽车。
以下是要实施的文档结构的简短示例:
来自计算机类别的商品:
{
name: "Core i7",
category: 1,
properties:{
price:300,
vendor: "Intel",
...
}
}
同时,来自汽车类别的商品具有自己的属性集:
{
name: "Audi Q7",
category: 2,
properties:{
price:30000,
color:"red",
hp:200
...
}
}
但如果我有100个类别,我的数据库将存储100个不同的文档(按照它的结构)。 MongoDB文档说文档可以是无模式的,但最好是使用更少或更多相同的文档结构。
我的问题是:拥有大量不同的结构文件是非常糟糕的做法吗?
答案 0 :(得分:4)
“好”或“坏”是非常主观的。如果它带来的好处多于伤害,那么它就是好事。否则,它可能不是。
由于MongoDB是无模式的,至少在这里你可以拥有大量具有不同结构的文档(而不是关系数据库)。这个事实本身就是中立的。这是你对它的使用,它会使你的应用程序 好或坏 。
答案 1 :(得分:1)
我会说,对于像“产品”目录这样的东西,每个文档都有不同的结构是完全合理的。实际上,您根本没有不同的顶级结构,只是每个项目的属性在数组中具有不同的元素。