【问题标题】:MongoDB/Ruby (Mongoid): how to select only embedded documentsMongoDB/Ruby (Mongoid):如何只选择嵌入的文档
【发布时间】:2011-06-02 17:42:51
【问题描述】:

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

class User < MyModel
  include Mongoid::Document
  embeds_many :tickets
  ...
end

class Ticket < MyModel
  include Mongoid::Document
  embedded_in :user, :inverse_of => :tickets
  ...
end

在管理部分,我进行查询以选择所有支持请求。但由于门票集合是嵌入的,我无法直接查询。这是我得到的:

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

这绝对看起来很难看。还有其他方法吗?

【问题讨论】:

    标签: ruby mongodb mongoid


    【解决方案1】:

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

    MongoDB 最终应该支持“虚拟集合”来解决这个常见问题,但现在,您必须解决这个限制。

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

    【讨论】:

    • @Alex。感谢投票。我也可以真正使用虚拟收藏。
    猜你喜欢
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多