class MongoidOccurrences::Aggregations::Aggregation
Attributes
base_criteria[R]
options[R]
Public Class Methods
instantiate(*args)
click to toggle source
# File lib/mongoid_occurrences/aggregations/aggregation.rb, line 10 def self.instantiate(*args) new(*args).instantiate end
new(base_criteria, options = {})
click to toggle source
# File lib/mongoid_occurrences/aggregations/aggregation.rb, line 18 def initialize(base_criteria, options = {}) @base_criteria = base_criteria @options = options end
option(name, default_value=nil)
click to toggle source
# File lib/mongoid_occurrences/aggregations/aggregation.rb, line 4 def self.option(name, default_value=nil) define_method(name) do HashWithIndifferentAccess[options].fetch(name, default_value) end end
Public Instance Methods
aggregation()
click to toggle source
# File lib/mongoid_occurrences/aggregations/aggregation.rb, line 23 def aggregation base_criteria.klass .collection .aggregate( (selectors + pipeline), allow_disk_use: allow_disk_use ) end
instantiate()
click to toggle source
# File lib/mongoid_occurrences/aggregations/aggregation.rb, line 32 def instantiate aggregation.map do |doc| base_criteria.klass.instantiate(doc) end end
Private Instance Methods
selectors()
click to toggle source
# File lib/mongoid_occurrences/aggregations/aggregation.rb, line 40 def selectors [ { '$match' => { '$and' => [criteria.selector] } }, { '$sort' => criteria.options[:sort] }, { '$limit' => criteria.options[:limit] } ].map { |i| i.delete_if { |_, v| v.blank? } }.reject(&:blank?) end