Module: Mongo::Operation::Specifiable Private
- Included in:
- Aggregate, CollectionsInfo, Command, Count, Create, CreateIndex, CreateSearchIndexes, CreateUser, Delete, Distinct, Drop, DropDatabase, DropIndex, DropSearchIndex, Explain, Find, GetMore, Indexes, Insert, KillCursors, ListCollections, MapReduce, OpMsgBase, ParallelScan, RemoveUser, Update, UpdateSearchIndex, UpdateUser, UsersInfo, WriteCommand
- Defined in:
- lib/mongo/operation/shared/specifiable.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.
This module contains common functionality for convenience methods getting various values from the spec.
Constant Summary collapse
- DB_NAME =
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 field for database name.
:db_name- DELETES =
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 field for deletes.
:deletes- DELETE =
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 field for delete.
:delete- DOCUMENTS =
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 field for documents.
:documents- COLL_NAME =
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 field for collection name.
:coll_name- CURSOR_COUNT =
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 field for cursor count.
:cursor_count- CURSOR_ID =
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 field for cursor id.
:cursor_id- INDEX =
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 field for an index.
:index- INDEXES =
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 field for multiple indexes.
:indexes- INDEX_NAME =
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 field for index names.
:index_name- OPERATION_ID =
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 operation id constant.
:operation_id- OPTIONS =
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 field for options.
:options- READ_CONCERN =
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 read concern option.
:read_concern- MAX_TIME_MS =
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 max time ms option.
:max_time_ms- SELECTOR =
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 field for a selector.
:selector- UPDATES =
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 field for updates.
:updates- UPDATE =
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 field for update.
:update- USER =
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 field name for a user.
:user- USER_NAME =
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 field name for user name.
:user_name- WRITE_CONCERN =
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 field name for a write concern.
:write_concern- READ =
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 field name for the read preference.
:read- BYPASS_DOC_VALIDATION =
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.
Whether to bypass document level validation.
:bypass_document_validation- COLLATION =
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.
A collation to apply to the operation.
:collation
Instance Attribute Summary collapse
-
#spec ⇒ Hash
readonly
private
Spec The specification for the operation.
Instance Method Summary collapse
-
#==(other) ⇒ true, false
(also: #eql?)
private
Check equality of two specifiable operations.
-
#acknowledged_write? ⇒ Boolean
private
Does the operation have an acknowledged write concern.
- #apply_collation(selector, _connection, collation) ⇒ Object private
-
#array_filters(connection) ⇒ Hash | nil
private
The array filters.
-
#bypass_document_validation ⇒ true, false
private
Whether or not to bypass document level validation.
-
#coll_name ⇒ String
private
The name of the collection to which the operation should be sent.
-
#collation ⇒ Hash
private
The collation to apply to the operation.
-
#command(connection) ⇒ Hash
private
The command.
-
#cursor_count ⇒ Integer
private
Get the cursor count from the spec.
-
#cursor_id ⇒ Integer
private
The id of the cursor created on the server.
-
#db_name ⇒ String
private
The name of the database to which the operation should be sent.
-
#delete ⇒ Hash
private
Get the delete document from the specification.
-
#deletes ⇒ Array<BSON::Document>
private
Get the deletes from the specification.
-
#documents ⇒ Array<BSON::Document>
private
The documents to in the specification.
-
#index ⇒ Hash
private
Get the index from the specification.
-
#index_id ⇒ String
private
Get the index id from the spec.
-
#index_name ⇒ String
private
Get the index name from the spec.
-
#indexes ⇒ Hash
private
Get the indexes from the specification.
-
#initialize(spec) ⇒ Object
private
Create the new specifiable operation.
-
#max_time_ms ⇒ Hash
private
Get the max time ms value from the spec.
-
#namespace ⇒ String
private
The namespace, consisting of the db name and collection name.
-
#operation_id ⇒ Integer
private
Get the operation id for the operation.
-
#options(_connection) ⇒ Hash
private
Get the options for executing the operation on a particular connection.
-
#ordered? ⇒ true, false
private
Whether the operation is ordered.
-
#read ⇒ Mongo::ServerSelector
private
The read preference for this operation.
-
#read_concern ⇒ Hash
private
Get the read concern document from the spec.
-
#selector(_connection) ⇒ Hash
private
The selector from the specification for execution on a particular connection.
-
#session ⇒ Session
private
The session to use for the operation.
-
#txn_num ⇒ Integer
private
The transaction number for the operation.
- #txn_num=(num) ⇒ Object private
-
#update ⇒ Hash
private
The update document from the spec.
-
#updates ⇒ Array<BSON::Document>
private
The update documents from the spec.
-
#user ⇒ Auth::User
private
The user for user related operations.
-
#user_name ⇒ String
private
The user name from the specification.
-
#write_concern ⇒ Mongo::WriteConcern
private
The write concern to use for this operation.
Instance Attribute Details
#spec ⇒ Hash (readonly)
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.
Returns spec The specification for the operation.
141 142 143 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 141 def spec @spec end |
Instance Method Details
#==(other) ⇒ true, false Also known as: eql?
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.
Check equality of two specifiable operations.
153 154 155 156 157 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 153 def ==(other) return false unless other.is_a?(Specifiable) spec == other.spec end |
#acknowledged_write? ⇒ Boolean
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.
Does the operation have an acknowledged write concern.
542 543 544 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 542 def acknowledged_write? write_concern.nil? || write_concern.acknowledged? end |
#apply_collation(selector, _connection, collation) ⇒ 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.
546 547 548 549 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 546 def apply_collation(selector, _connection, collation) selector = selector.merge(collation: collation) if collation selector end |
#array_filters(connection) ⇒ Hash | nil
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.
The array filters.
529 530 531 532 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 529 def array_filters(connection) sel = selector(connection) sel[Operation::ARRAY_FILTERS] if sel end |
#bypass_document_validation ⇒ true, false
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.
Whether or not to bypass document level validation.
361 362 363 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 361 def bypass_document_validation spec[BYPASS_DOC_VALIDATION] end |
#coll_name ⇒ String
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.
The name of the collection to which the operation should be sent.
228 229 230 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 228 def coll_name spec[COLL_NAME] end |
#collation ⇒ Hash
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.
The collation to apply to the operation.
373 374 375 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 373 def collation send(self.class::IDENTIFIER).first[COLLATION] end |
#command(connection) ⇒ Hash
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.
The command.
517 518 519 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 517 def command(connection) selector(connection) end |
#cursor_count ⇒ Integer
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.
Get the cursor count from the spec.
168 169 170 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 168 def cursor_count spec[CURSOR_COUNT] end |
#cursor_id ⇒ Integer
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.
The id of the cursor created on the server.
240 241 242 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 240 def cursor_id spec[CURSOR_ID] end |
#db_name ⇒ String
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.
The name of the database to which the operation should be sent.
180 181 182 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 180 def db_name spec[DB_NAME] end |
#delete ⇒ Hash
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.
Get the delete document from the specification.
204 205 206 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 204 def delete spec[DELETE] end |
#deletes ⇒ Array<BSON::Document>
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.
Get the deletes from the specification.
192 193 194 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 192 def deletes spec[DELETES] end |
#documents ⇒ Array<BSON::Document>
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.
The documents to in the specification.
216 217 218 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 216 def documents spec[DOCUMENTS] end |
#index ⇒ Hash
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.
Get the index from the specification.
252 253 254 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 252 def index spec[INDEX] end |
#index_id ⇒ String
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.
Get the index id from the spec.
259 260 261 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 259 def index_id spec[:index_id] end |
#index_name ⇒ String
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.
Get the index name from the spec.
271 272 273 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 271 def index_name spec[INDEX_NAME] end |
#indexes ⇒ Hash
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.
Get the indexes from the specification.
283 284 285 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 283 def indexes spec[INDEXES] end |
#initialize(spec) ⇒ 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.
Create the new specifiable operation.
298 299 300 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 298 def initialize(spec) @spec = spec end |
#max_time_ms ⇒ Hash
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.
Get the max time ms value from the spec.
349 350 351 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 349 def max_time_ms spec[MAX_TIME_MS] end |
#namespace ⇒ String
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.
The namespace, consisting of the db name and collection name.
480 481 482 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 480 def namespace "#{db_name}.#{coll_name}" end |
#operation_id ⇒ Integer
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.
Get the operation id for the operation. Used for linking operations in monitoring.
311 312 313 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 311 def operation_id spec[OPERATION_ID] end |
#options(_connection) ⇒ Hash
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.
Get the options for executing the operation on a particular connection.
323 324 325 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 323 def (_connection) spec[OPTIONS] || {} end |
#ordered? ⇒ true, false
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.
Whether the operation is ordered.
468 469 470 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 468 def ordered? !!@spec.fetch(:ordered, true) end |
#read ⇒ Mongo::ServerSelector
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.
The read preference for this operation.
456 457 458 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 456 def read @read ||= (ServerSelector.get(spec[READ]) if spec[READ]) end |
#read_concern ⇒ Hash
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.
The document may include afterClusterTime.
Get the read concern document from the spec.
337 338 339 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 337 def read_concern spec[READ_CONCERN] end |
#selector(_connection) ⇒ Hash
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.
The selector from the specification for execution on a particular connection.
386 387 388 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 386 def selector(_connection) spec[SELECTOR] end |
#session ⇒ Session
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.
The session to use for the operation.
492 493 494 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 492 def session @spec[:session] end |
#txn_num ⇒ Integer
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.
The transaction number for the operation.
504 505 506 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 504 def txn_num @spec[:txn_num] end |
#txn_num=(num) ⇒ 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.
508 509 510 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 508 def txn_num=(num) @spec[:txn_num] = num end |
#update ⇒ Hash
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.
The update document from the spec.
408 409 410 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 408 def update spec[UPDATE] end |
#updates ⇒ Array<BSON::Document>
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.
The update documents from the spec.
397 398 399 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 397 def updates spec[UPDATES] end |
#user ⇒ Auth::User
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.
The user for user related operations.
420 421 422 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 420 def user spec[USER] end |
#user_name ⇒ String
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.
The user name from the specification.
432 433 434 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 432 def user_name spec[USER_NAME] end |
#write_concern ⇒ Mongo::WriteConcern
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.
The write concern to use for this operation.
444 445 446 |
# File 'lib/mongo/operation/shared/specifiable.rb', line 444 def write_concern @spec[WRITE_CONCERN] end |