class MongoQL::StageContext

Attributes

injected_vars[RW]
pipeline[RW]

Public Class Methods

new() click to toggle source
# File lib/mongo_ql/stage_context.rb, line 7
def initialize
  @pipeline = []
  @injected_vars = {}
end

Public Instance Methods

If(conditon_expr, then_expr = nil, else_expr = nil, &block)
Alias for: cond
add_fields(*args) click to toggle source
# File lib/mongo_ql/stage_context.rb, line 29
def add_fields(*args)
  pipeline << Stage::AddFields.new(self, *args)
end
cond(conditon_expr, then_expr = nil, else_expr = nil, &block) click to toggle source
# File lib/mongo_ql/stage_context.rb, line 75
def cond(conditon_expr, then_expr = nil, else_expr = nil, &block)
  Expression::Condition.new(conditon_expr, then_expr, else_expr, &block)
end
Also aliased as: If
f(name) click to toggle source
# File lib/mongo_ql/stage_context.rb, line 67
def f(name)
  Expression::FieldNode.new(name)
end
first_of(*field_expressions) click to toggle source
# File lib/mongo_ql/stage_context.rb, line 61
def first_of(*field_expressions)
  field_expressions.map do |expr|
    [expr, expr.first]
  end.to_h
end
flatten(*args)
Alias for: unwind
group(*args) click to toggle source
# File lib/mongo_ql/stage_context.rb, line 43
def group(*args)
  pipeline << Stage::Group.new(self, *args)
end
join(*args, &block)
Alias for: lookup
lookup(*args, &block) click to toggle source
# File lib/mongo_ql/stage_context.rb, line 38
def lookup(*args, &block)
  pipeline << Stage::Lookup.new(self, *args, &block)
end
Also aliased as: join
match(*args)
Alias for: where
method_missing(m, *args, &block) click to toggle source
# File lib/mongo_ql/stage_context.rb, line 57
def method_missing(m, *args, &block)
  Expression::FieldNode.new(m)
end
project(*fields) click to toggle source
# File lib/mongo_ql/stage_context.rb, line 33
def project(*fields)
  pipeline << Stage::Project.new(self, *fields)
end
Also aliased as: select
scope(mongo_scope) click to toggle source
# File lib/mongo_ql/stage_context.rb, line 12
def scope(mongo_scope)
  criteria = nil
  if mongo_scope.respond_to?(:all)
    criteria = mongo_scope.all.selector.transform_keys { |k| k.to_sym }
  end

  if mongo_scope.is_a?(Hash)
    criteria = mongo_scope.transform_keys { |k| k.to_sym }
  end
  where(**criteria) if criteria
end
select(*fields)
Alias for: project
sort(*args) click to toggle source
# File lib/mongo_ql/stage_context.rb, line 52
def sort(*args)
  pipeline << Stage::Sort.new(self, *args)
end
Also aliased as: sort_by
sort_by(*args)
Alias for: sort
to_ast() click to toggle source
# File lib/mongo_ql/stage_context.rb, line 80
def to_ast
  pipeline.map(&:to_ast)
end
unwind(*args) click to toggle source
# File lib/mongo_ql/stage_context.rb, line 47
def unwind(*args)
  pipeline << Stage::Unwind.new(self, *args)
end
Also aliased as: flatten
v(val) click to toggle source
# File lib/mongo_ql/stage_context.rb, line 71
def v(val)
  Expression::ValueNode.new(val)
end
where(*args) click to toggle source
# File lib/mongo_ql/stage_context.rb, line 24
def where(*args)
  pipeline << Stage::Match.new(self, *args)
end
Also aliased as: match