mongodb - 如何在 MongoDB 中组织多对多关系

我有两个表/集合;用户和组。用户可以是任意数量的组的成员,并且用户也可以是任意数量的组的所有者。在关系数据库中,我可能会有第三个名为 UserGroups 的表,其中包含一个 UserID 列、一个 GroupID 列和一个 IsOwner 列。

我正在使用 MongoDB,我确信在文档数据库中对这种关系有不同的方法。我应该将组列表和作为所有者的组列表作为两个 ObjectID 数组嵌入到 Users 表中吗?我是否还应该将 Groups 表中的成员和所有者列表存储为两个数组,从而有效地反射(reflect)导致关系信息重复的关系?

或者桥接用户组表是文档数据库中用于多对多关系的合法概念?

谢谢

最佳答案

我所看到的以及我目前使用的是每个文档中带有节点 ID 的嵌入式数组。

所以文档 user1 有属性组:[id1,id2]

并且文档 group1 具有属性 users:[user1]。文档 group2 也有属性 users:[user1]。

通过这种方式,您可以获得一个 Group 对象并轻松选择所有相关用户,对于 User 也是如此。

在创建和更新对象时,这需要更多的工作。当您说 2 个对象相关时,您必须更新这两个对象。

MongoDB 中还有一个概念 DBReferences,根据您的驱动程序,它会在检索文档时自动提取引用的对象。

http://www.mongodb.org/display/DOCS/Database+References#DatabaseReferences-DBRef

https://stackoverflow.com/questions/4839881/

相关文章:

mongodb - Mongoose:深人口(填充人口密集的领域)

arrays - MongoDB:如何更新数组中的单个子元素,由数组中的索引引用?

shell - 如何从 Mongo ObjectID 中提取创建日期

mongodb - 大型项目的 NodeJS vs Play 框架

linux - 让 Linux 上的 MongoDB 监听远程连接

mongodb - 如何从 find 方法返回 Mongoose 结果?

mongodb - 如何在 MongoDB 中汇总总和以获得总计数?

mongodb - 查询 MongoDB 的 IDE?

mongodb - meteor :意外的mongo退出代码100

node.js - 创建后如何在 mongoose 中填充子文档?