Class: Mongoid::Criterion::NearSpatial
- Defined in:
- lib/mongoid_location/criterion/near_spatial.rb
Overview
NearSpecial criterion is used when performing #near with symbols to get get a shorthand syntax for where clauses.
Instance Attribute Summary
Attributes inherited from Complex
Instance Method Summary collapse
-
#to_mongo_query(input) ⇒ Object
Coninputert input to query for near or nearSphere.
Methods inherited from Complex
Constructor Details
This class inherits a constructor from Mongoid::Criterion::Complex
Instance Method Details
#to_mongo_query(input) ⇒ Object
Coninputert input to query for near or nearSphere
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/mongoid_location/criterion/near_spatial.rb', line 21 def to_mongo_query(input) if input.respond_to?(:x) {"$#{operator}" => [input.x, input.y]} #, '$maxDistance' => input[1] } elsif input.kind_of?(Hash) raise ':point required to make valid query' unless input[:point] input[:point] = input[:point].to_xy if input[:point].respond_to?(:to_xy) query = {"$#{operator}" => input[:point] } if input[:max] query['$maxDistance'] = input[:max].to_f if unit = Mongoid::Location.earth_radius[input[:unit]] unit *= Mongoid::Location::RAD_PER_DEG unless operator =~ /sphere/i input[:unit] = unit end query['$maxDistance'] = query['$maxDistance']/input[:unit].to_f if input[:unit] end query elsif input.kind_of? Array if input.first.kind_of? Numeric {"$#{operator}" => input } else input[0] = input[0].to_xy if input[0].respond_to?(:to_xy) {"$#{operator}" => input[0], '$maxDistance' => input[1] } end end end |