【问题标题】:deep nesting or different collection mongodb?深嵌套还是不同的集合mongodb?
【发布时间】:2011-03-10 01:23:38
【问题描述】:

我正在尝试找出使用 mongodb 和 mongomapper 存储我的 daat 的最佳方式。

我有类别,每个类别都可以用许多属性来描述,例如长度单位为毫米,重量单位为公斤等。

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

例如:

用户 A 想要存储他的类别“汽车”,其中包含车轮数和汽车长度(以毫米为单位) 用户 B 想要存储他的类别“汽车”,其中轮数和长度以毫米为单位,重量以公斤为单位。

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

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

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

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

深嵌套有问题吗?

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

【问题讨论】:

  • 这只是您上一个问题的重新散列:stackoverflow.com/questions/3097842,您从来没有费心接受这个答案。我会把这个问题留给其他人。
  • 您能否详细说明“深度嵌套” - 它实际上是多少层?
  • 叹息...现在成为第一个回答或获得“最佳”答案的热门竞赛。

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


【解决方案1】:

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

现在,关于将哪个女巫属性与哪个物品放在一起。简短回答:您描述的任何方式都可以使用;在效率方面都有一些权衡。

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

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

我将拥有以下集合:用户、*类别(例如汽车、船只、房屋等)、属性。

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

【讨论】:

    猜你喜欢
    • 2015-09-03
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    相关资源
    最近更新 更多