我有一个用户集合。每个用户都有一系列嵌入式文档:支持请求。
class User < MyModel
include Mongoid::Document
embeds_many :tickets
...
end
class Ticket < MyModel
include Mongoid::Document
embedded_in :user, :inverse_of => :tickets
...
end
在admin部分中,我进行查询以选择所有支持请求。但由于门票集是嵌入的,我无法直接查询。这就是我得到的:
@users_with_pending_tickets = User.only(:tickets).where("tickets.status" => "Pending")
<% for user in @users_with_pending_tickets %>
<% ticket = user.tickets.where(:status => "Pending").first %>
<%= ticket... %>
<% end %>
这绝对看起来很难看。还有另一种方式吗?
答案 0 :(得分:2)
如果您需要检索所有故障单,则应该使用references_many
关系而不是嵌入式关系。
MongoDB应该最终支持'虚拟馆藏'来解决这个常见问题,但是现在,你必须解决这个问题。
有关详细信息,请参阅my answer to this similar question。