【发布时间】:2011-06-17 21:56:41
【问题描述】:
我有两个表/集合;用户和组。用户可以是任意数量的组的成员,并且用户也可以是任意数量的组的所有者。在关系数据库中,我可能会有第三个名为 UserGroups 的表,其中包含一个 UserID 列、一个 GroupID 列和一个 IsOwner 列。
我正在使用 MongoDB,我确信在文档数据库中对这种关系有不同的方法。我应该将组列表和作为所有者的组列表作为两个 ObjectID 数组嵌入到 Users 表中吗?我是否还应该将 Groups 表中的成员和所有者列表存储为两个数组,从而有效地反映导致关系信息重复的关系?
或者桥接用户组表是文档数据库中用于多对多关系的合法概念?
谢谢
【问题讨论】:
-
我知道这已经很老了,但我也想知道规模。如果您有 1000 个组怎么办?
-
好点——在这种情况下,另一种选择是使用相当于 SQL 数据库中的联结关系 - 具有两个外键的中间集合 - 每个相关集合一个外键。在这种情况下,您可以执行 3 个查询:(1) 一个普通的 find() 来获取父结果,(2) 一个 IN 查询来获取中间结果,最后 (3) 一个使用外键的 IN 查询查找子记录的中间结果。 (这就是我们在 Waterline 中实现此功能的方式)
标签: mongodb many-to-many relational-database document-database