通过引用的文档字段进行Mongoid搜索

时间:2011-07-11 13:07:01

标签: ruby-on-rails ruby-on-rails-3 mongoid

我在使用Mongoid的Rails 3应用程序中遇到搜索查询问题。我的模特是:

class Offer
  has_many :waypoints
end

class Waypoint
  belongs_to :offer
  field: address
  field: order, type: Integer
end

因此每个Offer都有几个Waypoint,这些Waypoints有订单。具有最小顺序的航点是起点,具有最大 - 目的地点。

任务:我们有“收件人”和“发件人”地址。我们需要找到所有优惠,哪些航点以正确的顺序包含这些地址。

问题:我找不到有用的查询。在mongoid文档中我找到了像

这样的东西

Offer.where(“waypoints.address”=>“柏林”)但它仅在嵌入Waypoints时才有效。

您知道哪种解决方案可以解决这个问题?

P.S。 所以我可能会创建另一个带有字段的表WaypointsCache(对于每个提供,将有几个具有不同from-to组合的缓存):

class WaypointCache
  field: from
  field: to
  field: offer_id
end

1 个答案:

答案 0 :(得分:4)

如果目标是查找柏林航点地址的所有优惠,那么您有几个选择。

  1. 移动要嵌入要约内的航点。
  2. 执行两个查询,如下所示:
  3. 代码:

    waypoints = Waypoint.where(:address => "Berlin").only(:offer_id).all
    offer_ids = waypoints.map(&:offer_id)
    offers = Offer.any_in(:_id => offer_ids).all