Mongoid,以公里为单位与模型保持距离

时间:2015-11-23 07:40:58

标签: ruby-on-rails ruby mongoid

我有模型Shop,其中包含用于地理位置的字段:

 class Shop
   include Mongoid::Document
   field :location, type: Array

   index( { location: '2d' }, { min: -180, max: 180 })
   before_save :fix_location, if: :location_changed?
   def fix_location
    self.location = self.location.map(&:to_f)
   end
 end

我为我的模特创建了索引。

然后我想找到大约50公里的商店:

  distance = 50 # km
  loc = [lat, lng]

  Shop.where(location: {"$near" => loc , "$maxDistance" => distance.fdiv(111.12)})

此方法运行正常,并提供我需要的模型。但是,如何确定它们离我的位置有多远(以公里为单位)?

我需要使用聚合吗?

0 个答案:

没有答案