class MongoQL::Stage::Match

Attributes

conditions[RW]
ctx[RW]
field_filters[RW]

Public Class Methods

new(ctx, *conds, **field_filters) click to toggle source
# File lib/mongo_ql/stage/match.rb, line 7
def initialize(ctx, *conds, **field_filters)
  @ctx = ctx
  conds.each do |c|
    raise ArgumentError, "#{c.inspect} is not a valid MongoQL::Expression" unless c.is_a?(MongoQL::Expression)
  end
  @conditions    = conds
  @field_filters = field_filters
end

Public Instance Methods

to_ast() click to toggle source
# File lib/mongo_ql/stage/match.rb, line 16
def to_ast
  conds = {}
  if compose_conditions
    conds["$expr"] = compose_conditions
  end
  ast = { "$match" => conds.merge(field_filters) }
  MongoQL::Utils.deep_transform_values(ast, &MongoQL::EXPRESSION_TO_AST_MAPPER)
end

Private Instance Methods

compose_conditions() click to toggle source
# File lib/mongo_ql/stage/match.rb, line 26
def compose_conditions
  if conditions.size > 1
    { "$and" => conditions }
  elsif conditions.size == 1
    conditions[0]
  else
    nil
  end
end