深筑巢或不同的收集mongodb?

时间:2010-06-30 10:07:48

标签: ruby-on-rails ruby mongodb mongomapper nosql

我正在努力找出使用mongodb和mongomapper存储我的daat的最佳方法。

我有类别,每个类别都可以用许多属性来描述,所以长度以mm为单位,重量以kg为单位等。

我希望每个用户都能够创建自己的属性来描述一类产品。

所以例如:

用户A想要存储他的类别“汽车”,车轮数量和汽车长度(mm) 用户B想要存储他的类别“汽车”,车轮数量和长度(mm)和重量(kg)。

每个人的类别都相同,但属性可能不同。

我应该将其存储为类别集合,然后每个cateogry包含用户数组,每个用户包含属性anmes和units的哈希值?

或者我应该以某种方式将其分解为多个集合?

或者有没有人能想到更好的方式?

深嵌套是一个问题吗?

非常感谢advancfe寻求帮助和建议。 瑞克

1 个答案:

答案 0 :(得分:0)

让我们从简单的答案开始。将属性存储为项目文档中的字段。这就是使用无架构数据存储的原因。

现在,关于哪个女巫属性与哪个项目放在一起。简短的回答:你描述的任何方式都有效;在效率方面都有一些权衡。

我认为你的模型是这样的:

  • 有一个集合用户
  • 许多集合的项目称为类别
  • 每个项类别的成员
  • 每个用户都有很多
  • 类别中的每个项目都有很多潜在属性,具体取决于用户
  • 某些用户将共享属性

我会拥有以下系列:用户,*类别(例如汽车,船只,房屋等......),属性。

属性集合将列出一个类别(例如汽车),该类别中项目的属性(例如燃料里程),以及使用该属性的user_id列表。