From 6db3848149aa1ba4e82b1c7446afd6bcb7cb4b0d Mon Sep 17 00:00:00 2001 From: mdalton <mdalton@weblinc.com> Date: Sat, 23 Nov 2013 12:47:54 -0500 Subject: [PATCH] Change mongodb near query so that a nil radius omits the maxDistance instead of setting to 0.0 --- lib/geocoder/stores/mongo_base.rb | 7 +++++-- test/mongoid_test.rb | 7 +++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/geocoder/stores/mongo_base.rb b/lib/geocoder/stores/mongo_base.rb index bfc295d2..6b5bebc7 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 1af5e9cd..8bd91bc7 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 -- GitLab