Class: Mongoid::Criterion::NearSpacial
- Defined in:
- lib/mongoid_spacial/criterion/near_spacial.rb
Overview
NearSpecial criterion is used when performing #near with symbols to get get a shorthand syntax for where clauses.
Instance Method Summary collapse
-
#to_mongo_query(input) ⇒ Object
Coninputert input to query for near or nearSphere.
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 |
# File 'lib/mongoid_spacial/criterion/near_spacial.rb', line 21 def to_mongo_query(input) if input.kind_of?(Hash) raise ':point required to make valid query' unless input[:point] input[:point] = input[:point].to_lng_lat if input[:point].respond_to?(:to_lng_lat) query = {"$#{operator}" => input[:point] } if input[:max] query['$maxDistance'] = input[:max].to_f if unit = Mongoid::Spacial.earth_radius[input[:unit]] unit *= Mongoid::Spacial::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_lng_lat if input[0].respond_to?(:to_lng_lat) {"$#{operator}" => input[0], '$maxDistance' => input[1] } end end end |