MongoDB / Ruby(Mongoid):如何只选择嵌入的文档

时间:2011-01-03 07:43:56

标签: ruby mongodb mongoid

我有一个用户集合。每个用户都有一系列嵌入式文档:支持请求。

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 %>

这绝对看起来很难看。还有另一种方式吗?

1 个答案:

答案 0 :(得分:2)

如果您需要检索所有故障单,则应该使用references_many关系而不是嵌入式关系。

MongoDB应该最终支持'虚拟馆藏'来解决这个常见问题,但是现在,你必须解决这个问题。

有关详细信息,请参阅my answer to this similar question