Module: Mongoid::Criteria::Queryable::Optional
- Extended by:
- Macroable
- Included in:
- Mongoid::Criteria::Queryable
- Defined in:
- lib/mongoid/criteria/queryable/optional.rb
Overview
The optional module includes all behavior that has to do with extra options surrounding queries, like skip, limit, sorting, etc.
Instance Attribute Summary collapse
-
#options ⇒ Object
Returns the value of attribute options.
- #options The query options.(Thequeryoptions.) ⇒ Object
Class Method Summary collapse
-
.forwardables ⇒ Array<Symbol>
Get the methods on the optional that can be forwarded to from a model.
Instance Method Summary collapse
-
#ascending(*fields) ⇒ Optional
(also: #asc)
Add ascending sorting options for all the provided fields.
-
#batch_size(value = nil) ⇒ Optional
Adds the option for telling MongoDB how many documents to retrieve in it’s batching.
-
#collation(collation_doc) ⇒ Optional
Set the collation.
-
#comment(comment = nil) ⇒ Optional
Associate a comment with the query.
-
#cursor_type(type) ⇒ Optional
Set the cursor type.
-
#descending(*fields) ⇒ Optional
(also: #desc)
Add descending sorting options for all the provided fields.
-
#hint(value = nil) ⇒ Optional
Add an index hint to the query options.
-
#limit(value = nil) ⇒ Optional
Add the number of documents to limit in the returned results.
-
#max_scan(value = nil) ⇒ Optional
Adds the option to limit the number of documents scanned in the collection.
-
#max_time_ms(value = nil) ⇒ Optional
Adds a cumulative time limit in milliseconds for processing operations on a cursor.
-
#no_timeout ⇒ Optional
Tell the query not to timeout.
-
#only(*args) ⇒ Optional
Limits the results to only contain the fields provided.
-
#order_by(*spec) ⇒ Optional
(also: #order)
Adds sorting criterion to the options.
-
#reorder(*spec) ⇒ Optional
Instead of merging the order criteria, use this method to completely replace the existing ordering with the provided.
-
#skip(value = nil) ⇒ Optional
(also: #offset)
Add the number of documents to skip.
-
#slice(criterion = nil) ⇒ Optional
Limit the returned results via slicing embedded arrays.
-
#snapshot ⇒ Optional
Tell the query to operate in snapshot mode.
-
#without(*args) ⇒ Optional
Limits the results to only contain the fields not provided.
Methods included from Macroable
Instance Attribute Details
#options ⇒ Object
Returns the value of attribute options.
14 15 16 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 14 def @options end |
#options The query options.(Thequeryoptions.) ⇒ Object
14 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 14 attr_accessor :options |
Class Method Details
.forwardables ⇒ Array<Symbol>
Get the methods on the optional that can be forwarded to from a model.
374 375 376 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 374 def forwardables public_instance_methods(false) - [ :options, :options= ] end |
Instance Method Details
#ascending(*fields) ⇒ Optional Also known as: asc
Add ascending sorting options for all the provided fields.
24 25 26 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 24 def ascending(*fields) sort_with_list(*fields, 1) end |
#batch_size(value = nil) ⇒ Optional
Adds the option for telling MongoDB how many documents to retrieve in it’s batching.
40 41 42 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 40 def batch_size(value = nil) option(value) { || .store(:batch_size, value) } end |
#collation(collation_doc) ⇒ Optional
Set the collation.
303 304 305 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 303 def collation(collation_doc) clone.tap { |query| query..store(:collation, collation_doc) } end |
#comment(comment = nil) ⇒ Optional
Set profilingLevel to 2 and the comment will be logged in the profile collection along with the query.
Associate a comment with the query.
274 275 276 277 278 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 274 def comment(comment = nil) clone.tap do |query| query..store(:comment, comment) end end |
#cursor_type(type) ⇒ Optional
The cursor can be type :tailable or :tailable_await.
Set the cursor type.
291 292 293 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 291 def cursor_type(type) clone.tap { |query| query..store(:cursor_type, type) } end |
#descending(*fields) ⇒ Optional Also known as: desc
Add descending sorting options for all the provided fields.
52 53 54 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 52 def descending(*fields) sort_with_list(*fields, -1) end |
#hint(value = nil) ⇒ Optional
Add an index hint to the query options.
67 68 69 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 67 def hint(value = nil) option(value) { || .store(:hint, value) } end |
#limit(value = nil) ⇒ Optional
Add the number of documents to limit in the returned results.
79 80 81 82 83 84 85 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 79 def limit(value = nil) option(value) do |, query| val = value.to_i .store(:limit, val) query.pipeline.push("$limit" => val) if aggregating? end end |
#max_scan(value = nil) ⇒ Optional
Adds the option to limit the number of documents scanned in the collection.
96 97 98 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 96 def max_scan(value = nil) option(value) { || .store(:max_scan, value) } end |
#max_time_ms(value = nil) ⇒ Optional
Adds a cumulative time limit in milliseconds for processing operations on a cursor.
108 109 110 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 108 def max_time_ms(value = nil) option(value) { || .store(:max_time_ms, value) } end |
#no_timeout ⇒ Optional
Tell the query not to timeout.
118 119 120 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 118 def no_timeout clone.tap { |query| query..store(:timeout, false) } end |
#only(*args) ⇒ Optional
Limits the results to only contain the fields provided.
130 131 132 133 134 135 136 137 138 139 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 130 def only(*args) args = args.flatten option(*args) do || .store( :fields, args.inject([:fields] || {}){ |sub, field| sub.tap { sub[field] = 1 }}, false ) end end |
#order_by(*spec) ⇒ Optional Also known as: order
Adds sorting criterion to the options.
170 171 172 173 174 175 176 177 178 179 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 170 def order_by(*spec) option(spec) do |, query| spec.compact.each do |criterion| criterion.__sort_option__.each_pair do |field, direction| add_sort_option(, field, direction) end query.pipeline.push("$sort" => [:sort]) if aggregating? end end end |
#reorder(*spec) ⇒ Optional
Instead of merging the order criteria, use this method to completely replace the existing ordering with the provided.
191 192 193 194 195 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 191 def reorder(*spec) clone.tap do |query| query..delete(:sort) end.order_by(*spec) end |
#skip(value = nil) ⇒ Optional Also known as: offset
Add the number of documents to skip.
205 206 207 208 209 210 211 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 205 def skip(value = nil) option(value) do |, query| val = value.to_i .store(:skip, val) query.pipeline.push("$skip" => val) if aggregating? end end |
#slice(criterion = nil) ⇒ Optional
Limit the returned results via slicing embedded arrays.
222 223 224 225 226 227 228 229 230 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 222 def slice(criterion = nil) option(criterion) do || .__union__( fields: criterion.inject({}) do |option, (field, val)| option.tap { |opt| opt.store(field, { "$slice" => val }) } end ) end end |
#snapshot ⇒ Optional
Tell the query to operate in snapshot mode.
238 239 240 241 242 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 238 def snapshot clone.tap do |query| query..store(:snapshot, true) end end |
#without(*args) ⇒ Optional
Limits the results to only contain the fields not provided.
252 253 254 255 256 257 258 259 260 261 |
# File 'lib/mongoid/criteria/queryable/optional.rb', line 252 def without(*args) args = args.flatten option(*args) do || .store( :fields, args.inject([:fields] || {}){ |sub, field| sub.tap { sub[field] = 0 }}, false ) end end |