class MongoidOccurrences::Aggregations::OccursBetween

Attributes

dtend[R]
dtstart[R]
options[R]

Public Class Methods

new(base_criteria, dtstart, dtend, options = {}) click to toggle source
# File lib/mongoid_occurrences/aggregations/occurs_between.rb, line 6
def initialize(base_criteria, dtstart, dtend, options = {})
  @base_criteria = base_criteria
  @dtstart = dtstart
  @dtend = dtend
  @options = options
end

Private Instance Methods

criteria() click to toggle source
# File lib/mongoid_occurrences/aggregations/occurs_between.rb, line 15
def criteria
  base_criteria.occurs_between(dtstart, dtend)
end
pipeline() click to toggle source
# File lib/mongoid_occurrences/aggregations/occurs_between.rb, line 19
def pipeline
  [
    { '$addFields' => { '_daily_occurrences' => '$daily_occurrences' } },
    { '$unwind' => { 'path' => '$_daily_occurrences' } },
    { '$addFields' => { '_dtstart' => '$_daily_occurrences.ds', '_dtend' => '$_daily_occurrences.de' } },
    { '$project' => { '_daily_occurrences' => 0 } },
    { '$match' => Queries::OccursBetween.criteria(base_criteria, dtstart, dtend, dtstart_field: '_dtstart', dtend_field: '_dtend').selector },
    { '$sort' => { sort_key => { asc: 1, desc: -1 }[sort_order] } }
  ]
end