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

#command, #session

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:

  • criteria (Criteria)

    The Mongoid criteria.

  • map (String)

    The map js function.

  • reduce (String)

    The reduce js function.

Since:

  • 3.0.0



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

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.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

#executeHash

Execute the $geoNear, returning the raw output.

Examples:

Run the $geoNear

geo_near.execute

Returns:

  • (Hash)

    The raw output

Since:

  • 3.1.0



157
158
159
# File 'lib/mongoid/contextual/geo_near.rb', line 157

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



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

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"}
  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



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

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

#sphericalGeoNear

Tell the command to calculate based on spherical distances.

Examples:

Add the spherical flag.

geo_near.spherical

Returns:

Since:

  • 3.1.0



129
130
131
132
# File 'lib/mongoid/contextual/geo_near.rb', line 129

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



169
170
171
# File 'lib/mongoid/contextual/geo_near.rb', line 169

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



181
182
183
# File 'lib/mongoid/contextual/geo_near.rb', line 181

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



144
145
146
147
# File 'lib/mongoid/contextual/geo_near.rb', line 144

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