diff --git a/lib/geocoder/stores/mongo_base.rb b/lib/geocoder/stores/mongo_base.rb index bfc295d2a28196ebd17550911b290f45300c4498..6b5bebc7f8544626cc36dcfb1ec57a11d5c4234c 100644 --- a/lib/geocoder/stores/mongo_base.rb +++ b/lib/geocoder/stores/mongo_base.rb @@ -31,8 +31,11 @@ module Geocoder::Store field = geocoder_options[:coordinates] conds[field] = empty.clone conds[field]["$nearSphere"] = coords.reverse - conds[field]["$maxDistance"] = \ - Geocoder::Calculations.distance_to_radians(radius, options[:units]) + + if radius + conds[field]["$maxDistance"] = \ + Geocoder::Calculations.distance_to_radians(radius, options[:units]) + end if obj = options[:exclude] conds[:_id.ne] = obj.id diff --git a/test/mongoid_test.rb b/test/mongoid_test.rb index 1af5e9cd56e64d617b0e0fcee676de9b14925e16..8bd91bc70fdcec8006d90e4e25170887f83e83e0 100644 --- a/test/mongoid_test.rb +++ b/test/mongoid_test.rb @@ -36,4 +36,11 @@ class MongoidTest < Test::Unit::TestCase result = PlaceWithoutIndex.index_options.keys.flatten[0] == :coordinates assert !result end + + def test_nil_radius_omits_max_distance + location = [40.750354, -73.993371] + p = Place.near(location, nil) + key = Mongoid::VERSION >= "3" ? "location" : :location + assert_equal nil, p.selector[key]['$maxDistance'] + end end