"В пределах X миль" поиск в mongodb - PullRequest
3 голосов
/ 09 августа 2011

Я хочу быть в состоянии найти почтовые индексы, которые находятся в пределах определенного радиуса расстояния от другого почтового индекса. У меня есть код из этого источника . Но это реализация SQL с использованием ActiveRecord. Это именно та реализация, которую я хочу, но только с MongoDB. Помогите!

1 Ответ

3 голосов
/ 09 августа 2011

Ознакомьтесь с документацией MongoDB и документацией по индексированию Mongoid .

class Zip
  include Mongoid::Document
  field :code
  field :location, :type => Array

  # make sure to rake db:mongoid:create_indexes
  index [[ :location, Mongo::GEO2D ]], :min => 200, :max => 200
end

# at the console
Zip.create(:code => 1001, :location => [0, 0])
Zip.create(:code => 1002, :location => [1, 1])
Zip.create(:code => 1003, :location => [2, 1])
Zip.create(:code => 1004, :location => [-1, -1])

Zip.where(:location => { '$near' => [0, 0] } ).count
# 4
Zip.where(:location => { '$near' => [0, 0], '$maxDistance' => 1.5 } ).count
# 3
Zip.where(:location => { '$near' => [0, 0], '$maxDistance' => 1 } ).first
# 1
...