Module: Mongoid::Contextual::Aggregable::Mongo
- Included in:
- Mongo
- Defined in:
- lib/mongoid/contextual/aggregable/mongo.rb
Overview
Contains behaviour for aggregating values in Mongo.
Instance Method Summary collapse
-
#aggregates(field) ⇒ Hash
Get all the aggregate values for the provided field.
-
#avg(field) ⇒ Float
Get the average value of the provided field.
-
#max(field = nil) ⇒ Float, Document
Get the max value of the provided field.
-
#min(field = nil) ⇒ Float, Document
Get the min value of the provided field.
-
#sum(field = nil) ⇒ Float
Get the sum value of the provided field.
Instance Method Details
#aggregates(field) ⇒ Hash
Get all the aggregate values for the provided field.
25 26 27 28 29 30 31 32 |
# File 'lib/mongoid/contextual/aggregable/mongo.rb', line 25 def aggregates(field) result = collection.find.aggregate(pipeline(field), session: _session).to_a if result.empty? { "count" => 0, "sum" => nil, "avg" => nil, "min" => nil, "max" => nil } else result.first end end |
#avg(field) ⇒ Float
Get the average value of the provided field.
44 45 46 |
# File 'lib/mongoid/contextual/aggregable/mongo.rb', line 44 def avg(field) aggregates(field)["avg"] end |
#max(field = nil) ⇒ Float, Document
Get the max value of the provided field. If provided a block, will return the Document with the greatest value for the field, in accordance with Ruby’s enumerable API.
66 67 68 |
# File 'lib/mongoid/contextual/aggregable/mongo.rb', line 66 def max(field = nil) block_given? ? super() : aggregates(field)["max"] end |
#min(field = nil) ⇒ Float, Document
Get the min value of the provided field. If provided a block, will return the Document with the smallest value for the field, in accordance with Ruby’s enumerable API.
88 89 90 |
# File 'lib/mongoid/contextual/aggregable/mongo.rb', line 88 def min(field = nil) block_given? ? super() : aggregates(field)["min"] end |
#sum(field = nil) ⇒ Float
Get the sum value of the provided field. If provided a block, will return the sum in accordance with Ruby’s enumerable API.
106 107 108 |
# File 'lib/mongoid/contextual/aggregable/mongo.rb', line 106 def sum(field = nil) block_given? ? super() : aggregates(field)["sum"] || 0 end |