Module: Mongo::Operation::Find::Builder::Command Private
- Defined in:
- lib/mongo/operation/find/builder/command.rb
Overview
This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.
Builds a find command specification from options.
Constant Summary collapse
- OPTION_MAPPINGS =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
The mappings from ruby options to the find command.
BSON::Document.new( allow_disk_use: 'allowDiskUse', allow_partial_results: 'allowPartialResults', await_data: 'awaitData', batch_size: 'batchSize', collation: 'collation', comment: 'comment', filter: 'filter', hint: 'hint', let: 'let', limit: 'limit', max_scan: 'maxScan', max_time_ms: 'maxTimeMS', max_value: 'max', min_value: 'min', no_cursor_timeout: 'noCursorTimeout', oplog_replay: 'oplogReplay', projection: 'projection', read_concern: 'readConcern', return_key: 'returnKey', show_disk_loc: 'showRecordId', single_batch: 'singleBatch', skip: 'skip', snapshot: 'snapshot', sort: 'sort', tailable: 'tailable', tailable_cursor: 'tailable', ).freeze
Class Method Summary collapse
-
.convert_limit_and_batch_size!(command) ⇒ Object
private
Converts negative limit and batchSize parameters in the find command to positive ones.
- .selector(spec, connection) ⇒ Object private
Class Method Details
.convert_limit_and_batch_size!(command) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Converts negative limit and batchSize parameters in the find command to positive ones. Removes the parameters if their values are zero.
This is only used for find commmand, not for OP_QUERY path.
The command
parameter is mutated by this method.
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/mongo/operation/find/builder/command.rb', line 87 module_function def convert_limit_and_batch_size!(command) if command[:limit] && command[:limit] < 0 && command[:batchSize] && command[:batchSize] < 0 then command[:limit] = command[:limit].abs command[:batchSize] = command[:limit].abs command[:singleBatch] = true else [:limit, :batchSize].each do |opt| if command[opt] if command[opt] < 0 command[opt] = command[opt].abs command[:singleBatch] = true elsif command[opt] == 0 command.delete(opt) end end end end end |
.selector(spec, connection) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/mongo/operation/find/builder/command.rb', line 58 module_function def selector(spec, connection) if spec[:collation] && !connection.features.collation_enabled? raise Error::UnsupportedCollation end BSON::Document.new.tap do |selector| OPTION_MAPPINGS.each do |k, server_k| unless (value = spec[k]).nil? selector[server_k] = value end end if rc = selector[:readConcern] selector[:readConcern] = Options::Mapper.transform_values_to_strings(rc) end convert_limit_and_batch_size!(selector) end end |