2

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

我有一个 User 模型和一个 Project 模型类 User include Mongoid::Document field :email end class Project include Mongoid::Document field :name end

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

因此,如果我想要旧的多对多关联,其中一个用户可以有很多项目,一个项目可以有很多用户。我应该如何设置?

我的方法是:class User include Mongoid::Document field :email references_many :projects referenced_in :project, :inverse_of => :users end class Project include Mongoid::Document field :name references_many :users referenced_in :user, :inverse_of => :项目结束

这是关于 MongoDB 架构进行这种多对多关联的正确方法吗?

谢谢

4

2 回答 2

5

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

于 2010-11-05T00:29:11.200 回答
1

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

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

于 2010-08-24T00:35:59.760 回答