Class: Daodalus::DSL::Select
- Inherits:
-
Object
- Object
- Daodalus::DSL::Select
- Defined in:
- lib/daodalus/dsl/select.rb
Instance Method Summary collapse
- #by_position ⇒ Object (also: #positional)
- #elem_match(clause) ⇒ Object
-
#initialize(dao, query, fields) ⇒ Select
constructor
A new instance of Select.
- #slice(skip = false, limit) ⇒ Object
Methods included from Queries
#find, #find_one, #select, #where
Methods included from Clause
#to_projection, #to_query, #to_update
Constructor Details
#initialize(dao, query, fields) ⇒ Select
Returns a new instance of Select.
7 8 9 10 11 |
# File 'lib/daodalus/dsl/select.rb', line 7 def initialize(dao, query, fields) @dao = dao @query = query @fields = fields end |
Instance Method Details
#by_position ⇒ Object Also known as: positional
15 16 17 18 |
# File 'lib/daodalus/dsl/select.rb', line 15 def by_position raise InvalidQueryError, "Too many fields for positional operator: #{fields.inspect}" if fields.size > 1 Select.new(dao, @query.select("#{fields.first}.$" => 1), []) end |
#elem_match(clause) ⇒ Object
30 31 32 |
# File 'lib/daodalus/dsl/select.rb', line 30 def elem_match clause Select.new(dao, @query.select(fields.first.to_s => { '$elemMatch' => clause.to_query}), []) end |
#slice(skip = false, limit) ⇒ Object
21 22 23 24 25 26 27 28 |
# File 'lib/daodalus/dsl/select.rb', line 21 def slice skip=false, limit raise InvalidQueryError, "Too many fields for slice operator: #{fields.inspect}" if fields.size > 1 if skip Select.new(dao, @query.select(fields.first.to_s => { '$slice' => [skip, limit]}), []) else Select.new(dao, @query.select(fields.first.to_s => { '$slice' => limit}), []) end end |