0

我一直在开发 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 文档说,文档可以是无模式的,但最好的做法是拥有或多或少相同的文档结构。

我的问题是:拥有大量不同结构的文档是不是很糟糕?

4

2 回答 2

4

“好”或“坏”是非常主观的。如果它带来的好处多于伤害,那很好。否则,它可能不是。

由于 MongoDB 是无模式的,因此至少在这里您可以拥有大量具有不同结构的文档(与关系数据库相反)。这个事实本身是中性的。您对它的使用将决定它对您的应用程序的好坏。

于 2012-05-01T11:19:43.773 回答
1

我想说,对于您的“产品”目录之类的东西,每个文档有不同的结构是完全合理的。实际上,您根本没有不同的顶级结构,只是每个项目的属性在数组中都有不同的元素。

于 2012-05-01T11:49:49.963 回答