为什么mongoid无法查询嵌入文件?

时间:2016-07-08 03:30:55

标签: ruby-on-rails mongoid

通过大数据,我意识到Mongoid不支持它。例如,我有两个模型定义:

class User
  include Mongoid::Document
  embeds_one :homepage
end

class Homepage
  include Mongoid::Document
  embedded_in :user
end

在此示例中,User和Homepage是一对一的关系。在RDBMS中,主页表中有一个引用键。在mongo,我们可以将主页嵌入用户。通过这种方式,我们可以查询User.all之类的用户;但是,我们无法像Homepage.all那样完全查询主页。

也许 has_one 宏是我想要的。我会为用户设计一些api,例如/users;另一方面,我还会为主页设计一些api,例如/homepages。但是,如果我在用户模型中设置has_one :homepage,则会丢失此类内容:我无法根据用户和主页的字段查询用户或主页。

1 个答案:

答案 0 :(得分:0)

如果您想从顶级访问Homepage个文档,那么您需要拥有自己的集合。当我们将文档嵌入到其他文档中时,它不会存储在单独的集合中,而是存储在父文档本身中。

所以,我认为你应该

class User
  include Mongoid::Document
  has_one :homepage
end

class Homepage
  include Mongoid::Document
  belongs_to :user
end

然后,您就可以在Homepage上查询user_id个文档,但不能查询User的其他字段。

相关问题