Class: Mongoid::Contextual::GeoNear

Inherits:
Object
  • Object
show all
Includes:
Enumerable, Command
Defined in:
lib/mongoid/contextual/geo_near.rb

Instance Attribute Summary

Attributes included from Command

#collection, #collection The collection to query against., #criteria, #criteria The criteria for the context.

Instance Method Summary collapse

Methods included from Command

#client, #command

Constructor Details

#initialize(collection, criteria, near) ⇒ GeoNear

Initialize the new map/reduce directive.

Examples:

Initialize the new map/reduce.

MapReduce.new(criteria, map, reduce)

Parameters:

  • collection (Mongo::Collection)

    The collection to run the operation on.

  • criteria (Criteria)

    The Mongoid criteria.

  • near (String)

Since:

  • 3.0.0



72
73
74
75
76
77
# File 'lib/mongoid/contextual/geo_near.rb', line 72

def initialize(collection, criteria, near)
  @collection, @criteria = collection, criteria
  command[:geoNear] = collection.name.to_s
  command[:near] = near
  apply_criteria_options
end

Instance Method Details

#average_distanceFloat?

Get the average distance for all documents from the point in the command.

Examples:

Get the average distance.

geo_near.average_distance

Returns:

  • (Float, nil)

    The average distance.

Since:

  • 3.1.0



20
21
22
23
# File 'lib/mongoid/contextual/geo_near.rb', line 20

def average_distance
  average = stats["avgDistance"]
  (average.nil? || average.nan?) ? nil : average
end

#distance_multiplier(value) ⇒ GeoNear

Provide a distance multiplier to be used for each returned distance.

Examples:

Provide the distance multiplier.

geo_near.distance_multiplier(13113.1)

Parameters:

  • value (Integer, Float)

    The distance multiplier.

Returns:

  • (GeoNear)

    The GeoNear wrapper.

Since:

  • 3.1.0



56
57
58
59
# File 'lib/mongoid/contextual/geo_near.rb', line 56

def distance_multiplier(value)
  command[:distanceMultiplier] = value
  self
end

#eachEnumerator

Iterates over each of the documents in the $geoNear, excluding the extra information that was passed back from the database.

Examples:

Iterate over the results.

geo_near.each do |doc|
  p doc
end

Returns:

  • (Enumerator)

    The enumerator.

Since:

  • 3.1.0



36
37
38
39
40
41
42
43
44
# File 'lib/mongoid/contextual/geo_near.rb', line 36

def each
  if block_given?
    documents.each do |doc|
      yield doc
    end
  else
    to_enum
  end
end

#empty_and_chainable?true

Is this context's criteria considered empty?

Examples:

Is this context's criteria considered empty?

geo_near.empty_and_chainable?

Returns:

  • (true)

    Always true.

Since:

  • 5.1.0



210
211
212
# File 'lib/mongoid/contextual/geo_near.rb', line 210

def empty_and_chainable?
  true
end

#executeHash

Execute the $geoNear, returning the raw output.

Examples:

Run the $geoNear

geo_near.execute

Returns:

  • (Hash)

    The raw output

Since:

  • 3.1.0



174
175
176
# File 'lib/mongoid/contextual/geo_near.rb', line 174

def execute
  results
end

#inspectString

Get a pretty string representation of the command.

Examples:

Inspect the geoNear.

geo_near.inspect

Returns:

  • (String)

    The inspection string.

Since:

  • 3.1.0



87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/mongoid/contextual/geo_near.rb', line 87

def inspect
%Q{#<Mongoid::Contextual::GeoNear
  selector:   #{criteria.selector.inspect}
  class:      #{criteria.klass}
  near:       #{command[:near]}
  multiplier: #{command[:distanceMultiplier] || "N/A"}
  max:        #{command[:maxDistance] || "N/A"}
  min:        #{command[:minDistance] || "N/A"}
  unique:     #{command[:unique].nil? ? true : command[:unique]}
  spherical:  #{command[:spherical] || false}>
}
end

#max_distance(value = nil) ⇒ GeoNear, Float

Specify the maximum distance to find documents for, or get the value of the document with the furthest distance.

Examples:

Set the max distance.

geo_near.max_distance(0.5)

Get the max distance.

geo_near.max_distance

Parameters:

  • value (Integer, Float) (defaults to: nil)

    The maximum distance.

Returns:

  • (GeoNear, Float)

    The GeoNear command or the value.

Since:

  • 3.1.0



114
115
116
117
118
119
120
121
# File 'lib/mongoid/contextual/geo_near.rb', line 114

def max_distance(value = nil)
  if value
    command[:maxDistance] = value
    self
  else
    stats["maxDistance"]
  end
end

#min_distance(value) ⇒ GeoNear

Specify the minimum distance to find documents for.

Examples:

Set the min distance.

geo_near.min_distance(0.5)

Parameters:

  • value (Integer, Float)

    The minimum distance.

Returns:

  • (GeoNear)

    The GeoNear command.

Since:

  • 3.1.0



133
134
135
136
# File 'lib/mongoid/contextual/geo_near.rb', line 133

def min_distance(value)
  command[:minDistance] = value
  self
end

#sphericalGeoNear

Tell the command to calculate based on spherical distances.

Examples:

Add the spherical flag.

geo_near.spherical

Returns:

Since:

  • 3.1.0



146
147
148
149
# File 'lib/mongoid/contextual/geo_near.rb', line 146

def spherical
  command[:spherical] = true
  self
end

#statsHash

Get the stats for the command run.

Examples:

Get the stats.

geo_near.stats

Returns:

  • (Hash)

    The stats from the command run.

Since:

  • 3.1.0



186
187
188
# File 'lib/mongoid/contextual/geo_near.rb', line 186

def stats
  results["stats"]
end

#timeFloat

Get the execution time of the command.

Examples:

Get the execution time.

geo_near.time

Returns:

  • (Float)

    The execution time.

Since:

  • 3.1.0



198
199
200
# File 'lib/mongoid/contextual/geo_near.rb', line 198

def time
  stats["time"]
end

#unique(value = true) ⇒ GeoNear

Tell the command whether or not the retured results should be unique.

Examples:

Set the unique flag.

geo_near.unique(false)

Parameters:

  • value (true, false) (defaults to: true)

    Whether to return unique documents.

Returns:

Since:

  • 3.1.0



161
162
163
164
# File 'lib/mongoid/contextual/geo_near.rb', line 161

def unique(value = true)
  command[:unique] = value
  self
end