我在使用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
答案 0 :(得分:4)
如果目标是查找柏林航点地址的所有优惠,那么您有几个选择。
代码:
waypoints = Waypoint.where(:address => "Berlin").only(:offer_id).all
offer_ids = waypoints.map(&:offer_id)
offers = Offer.any_in(:_id => offer_ids).all