通过大数据,我意识到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
,则会丢失此类内容:我无法根据用户和主页的字段查询用户或主页。
答案 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
的其他字段。