如何mongoid项目< = has_many =>用户

时间:2010-08-24 00:16:55

标签: ruby-on-rails mongodb mongoid

我上周刚刚开始使用Mongoid。我遇到了这个关联问题,我不确定我的方法是否正确。所以我想我会要求一些意见

我有一个用户模型和一个项目模型     类用户         包括Mongoid :: Document         字段:电子邮件     结束     班级项目         包括Mongoid :: Document         字段:名称     端

实际上,用户模型是由身份验证宝石Devise创建的,所以我猜它不能嵌入到Project中。

因此,如果我想要旧的多对多关联,其中用户可以拥有许多项目,而项目可以拥有许多用户。我该如何设置呢?

我的方法是这样的:     类用户         包括Mongoid :: Document         字段:电子邮件         references_many:projects         referenced_in:project,:inverse_of => :用户     结束     班级项目         包括Mongoid :: Document         字段:名称         references_many:用户         referenced_in:user,:inverse_of => :项目     端

对于MongoDB架构来说,这是一种正确的方式来进行这样的多对多关联吗?

谢谢

2 个答案:

答案 0 :(得分:5)

Mongoid文档解释了如何在http://mongoid.org/en/mongoid/docs/relations.html#has_and_belongs_to_many执行此操作。向下滚动到标题关系关联。在显示的代码示例中,Person和Preference模型之间存在多对多关系。

答案 1 :(得分:1)

文档数据库在多对多方面实际上非常糟糕,因为这几乎是关系数据的本质。当数据是分层的而不是关系数时,mongo会发光。

我会做什么(假设用户只有他们的电子邮件会更多),将用户存储在单独的集合中,并将用户ID数组存储在项目文档中。如果它只是电子邮件,我会将它们存储在项目文档中,并且只是接受它会更贵,然后用户可能应该更改他们的电子邮件。