module Mongo::Operation::Specifiable
This module contains common functionality for convenience methods getting various values from the spec.
@since 2.0.0
Constants
- BYPASS_DOC_VALIDATION
Whether to bypass document level validation.
@since 2.2.0
- COLLATION
A collation to apply to the operation.
@since 2.4.0
- COLL_NAME
The field for collection name.
@since 2.0.0
- CURSOR_COUNT
The field for cursor count.
@since 2.0.0
- CURSOR_ID
The field for cursor id.
@since 2.0.0
- CURSOR_IDS
The field for cursor ids.
@since 2.0.0
- DB_NAME
The field for database name.
@since 2.0.0
- DELETE
The field for delete.
@since 2.0.0
- DELETES
The field for deletes.
@since 2.0.0
- DOCUMENTS
The field for documents.
@since 2.0.0
- INDEX
The field for an index.
@since 2.0.0
- INDEXES
The field for multiple indexes.
@since 2.0.0
- INDEX_NAME
The field for index names.
@since 2.0.0
- MAX_TIME_MS
The max time ms option.
@since 2.2.5
- OPERATION_ID
The operation id constant.
@since 2.1.0
- OPTIONS
The field for options.
@since 2.0.0
- READ
The field name for the read preference.
@since 2.0.0
- READ_CONCERN
The read concern option.
@since 2.2.0
- SELECTOR
The field for a selector.
@since 2.0.0
- TO_RETURN
The field for number to return.
@since 2.0.0
- UPDATE
The field for update.
@since 2.0.0
- UPDATES
The field for updates.
@since 2.0.0
- USER
The field name for a user.
@since 2.0.0
- USER_NAME
The field name for user name.
@since 2.0.0
- WRITE_CONCERN
The field name for a write concern.
@since 2.0.0
Attributes
@return [ Hash ] spec The specification for the operation.
Public Class Methods
Create
the new specifiable operation.
@example Create
the new specifiable operation.
Specifiable.new(spec)
@param [ Hash ] spec The operation specification.
@see The individual operations for the values they require in their
specs.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 311 def initialize(spec) @spec = spec end
Public Instance Methods
Check equality of two specifiable operations.
@example Are the operations equal?
operation == other
@param [ Object ] other The other operation.
@return [ true, false ] Whether the objects are equal.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 162 def ==(other) return false unless other.is_a?(Specifiable) spec == other.spec end
Does the operation have an acknowledged write concern.
@example Determine whether the operation has an acknowledged write.
specifiable.array_filters
@return [ Boolean ] Whether or not the operation has an acknowledged write concern.
@since 2.5.2
# File lib/mongo/operation/shared/specifiable.rb, line 564 def acknowledged_write? write_concern.nil? || write_concern.acknowledged? end
The array filters.
@example Get the array filters.
specifiable.array_filters
@return [ Hash ] The array filters.
@since 2.5.2
# File lib/mongo/operation/shared/specifiable.rb, line 552 def array_filters selector[Operation::ARRAY_FILTERS] if selector end
Whether or not to bypass document level validation.
@example Get the bypass_document_validation
option.
specifiable.bypass_documentation_validation.
@return [ true, false ] Whether to bypass document level validation.
@since 2.2.0
# File lib/mongo/operation/shared/specifiable.rb, line 374 def bypass_document_validation spec[BYPASS_DOC_VALIDATION] end
The name of the collection to which the operation should be sent.
@example Get the collection name.
specifiable.coll_name
@return [ String ] Collection
name.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 236 def coll_name spec[COLL_NAME] end
The collation to apply to the operation.
@example Get the collation option.
specifiable.collation.
@return [ Hash ] The collation document.
@since 2.4.0
# File lib/mongo/operation/shared/specifiable.rb, line 386 def collation send(self.class::IDENTIFIER).first[COLLATION] end
The command.
@example Get the command.
specifiable.command
@return [ Hash ] The command.
@since 2.5.2
# File lib/mongo/operation/shared/specifiable.rb, line 540 def command(server = nil) selector(server) end
Get the cursor count from the spec.
@example Get the cursor count.
specifiable.cursor_count
@return [ Integer ] The cursor count.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 176 def cursor_count spec[CURSOR_COUNT] end
The id of the cursor created on the server.
@example Get the cursor id.
specifiable.cursor_id
@return [ Integer ] The cursor id.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 248 def cursor_id spec[CURSOR_ID] end
The ids of the cursors to kill from the spec.
@example Get the cursor ids from the spec.
specifiable.cursor_ids
@return [ Array<Integer> ] The cursor ids.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 260 def cursor_ids spec[CURSOR_IDS] end
The name of the database to which the operation should be sent.
@example Get the database name.
specifiable.db_name
@return [ String ] Database
name.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 188 def db_name spec[DB_NAME] end
Get the delete document from the specification.
@example Get the delete document.
specifiable.delete
@return [ Hash ] The delete document.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 212 def delete spec[DELETE] end
Get the deletes from the specification.
@example Get the deletes.
specifiable.deletes
@return [ Array<BSON::Document> ] The deletes.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 200 def deletes spec[DELETES] end
The documents to in the specification.
@example Get the documents.
specifiable.documents
@return [ Array<BSON::Document> ] The documents.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 224 def documents spec[DOCUMENTS] end
Get the index from the specification.
@example Get the index specification.
specifiable.index
@return [ Hash ] The index specification.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 272 def index spec[INDEX] end
Get the index name from the spec.
@example Get the index name.
specifiable.index_name
@return [ String ] The index name.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 284 def index_name spec[INDEX_NAME] end
Get the indexes from the specification.
@example Get the index specifications.
specifiable.indexes
@return [ Hash ] The index specifications.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 296 def indexes spec[INDEXES] end
Get the max time ms value from the spec.
@example Get the max time ms.
specifiable.max_time_ms
@return [ Hash ] The max time ms value.
@since 2.2.5
# File lib/mongo/operation/shared/specifiable.rb, line 362 def max_time_ms spec[MAX_TIME_MS] end
The namespace, consisting of the db name and collection name.
@example Get the namespace.
specifiable.namespace
@return [ String ] The namespace.
@since 2.1.0
# File lib/mongo/operation/shared/specifiable.rb, line 504 def namespace "#{db_name}.#{coll_name}" end
Get the operation id for the operation. Used for linking operations in monitoring.
@example Get the operation id.
specifiable.operation_id
@return [ Integer ] The operation id.
@since 2.1.0
# File lib/mongo/operation/shared/specifiable.rb, line 324 def operation_id spec[OPERATION_ID] end
Get the options for the operation.
@example Get the options.
specifiable.options
@return [ Hash ] The options.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 336 def options(server = nil) spec[OPTIONS] || {} end
Whether the operation is ordered.
@example Get the ordered value, true is the default.
specifiable.ordered?
@return [ true, false ] Whether the operation is ordered.
@since 2.1.0
# File lib/mongo/operation/shared/specifiable.rb, line 492 def ordered? !!(@spec.fetch(:ordered, true)) end
The read preference for this operation.
@example Get the read preference.
specifiable.read
@return [ Mongo::ServerSelector
] The read preference.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 480 def read @read ||= ServerSelector.get(spec[READ]) if spec[READ] end
Get the read concern document from the spec.
@note The document may include afterClusterTime.
@example Get the read concern.
specifiable.read_concern
@return [ Hash ] The read concern document.
@since 2.2.0
# File lib/mongo/operation/shared/specifiable.rb, line 350 def read_concern spec[READ_CONCERN] end
The selector for from the specification.
@example Get a selector specification.
specifiable.selector.
@return [ Hash ] The selector spec.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 398 def selector(server = nil) spec[SELECTOR] end
The session to use for the operation.
@example Get the session.
specifiable.session
@return [ Session
] The session.
@since 2.5.0
# File lib/mongo/operation/shared/specifiable.rb, line 516 def session @spec[:session] end
The number of documents to request from the server.
@example Get the to return value from the spec.
specifiable.to_return
@return [ Integer ] The number of documents to return.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 410 def to_return spec[TO_RETURN] end
The transaction number for the operation.
@example Get the transaction number.
specifiable.txn_num
@return [ Integer ] The transaction number.
@since 2.5.0
# File lib/mongo/operation/shared/specifiable.rb, line 528 def txn_num @spec[:txn_num] end
The update document from the spec.
@example Get the update document.
@return [ Hash ] The update document.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 432 def update spec[UPDATE] end
The update documents from the spec.
@example Get the update documents.
@return [ Array<BSON::Document> ] The update documents.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 421 def updates spec[UPDATES] end
The user for user related operations.
@example Get the user.
specifiable.user
@return [ Auth::User
] The user.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 444 def user spec[USER] end
The user name from the specification.
@example Get the user name.
specifiable.user_name
@return [ String ] The user name.
@since 2.0.
# File lib/mongo/operation/shared/specifiable.rb, line 456 def user_name spec[USER_NAME] end
The write concern to use for this operation.
@example Get the write concern.
specifiable.write_concern
@return [ Mongo::WriteConcern
] The write concern.
@since 2.0.0
# File lib/mongo/operation/shared/specifiable.rb, line 468 def write_concern @spec[WRITE_CONCERN] end