Module: Mongo::Operation::Specifiable Private

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.

Since:

  • 2.0.0

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.

Since:

  • 2.0.0

:db_name.freeze
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.

Since:

  • 2.0.0

:deletes.freeze
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.

Since:

  • 2.0.0

:delete.freeze
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.

Since:

  • 2.0.0

:documents.freeze
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.

Since:

  • 2.0.0

:coll_name.freeze
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.

Since:

  • 2.0.0

:cursor_count.freeze
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.

Since:

  • 2.0.0

:cursor_id.freeze
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.

Since:

  • 2.0.0

:index.freeze
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.

Since:

  • 2.0.0

:indexes.freeze
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.

Since:

  • 2.0.0

:index_name.freeze
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.

Since:

  • 2.1.0

:operation_id.freeze
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.

Since:

  • 2.0.0

:options.freeze
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.

Since:

  • 2.2.0

:read_concern.freeze
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.

Since:

  • 2.2.5

:max_time_ms.freeze
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.

Since:

  • 2.0.0

:selector.freeze
TO_RETURN =

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 number to return.

Since:

  • 2.0.0

:to_return.freeze
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.

Since:

  • 2.0.0

:updates.freeze
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.

Since:

  • 2.0.0

:update.freeze
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.

Since:

  • 2.0.0

:user.freeze
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.

Since:

  • 2.0.0

:user_name.freeze
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.

Since:

  • 2.0.0

:write_concern.freeze
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.

Since:

  • 2.0.0

:read.freeze
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.

Since:

  • 2.2.0

:bypass_document_validation.freeze
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.

Since:

  • 2.4.0

:collation.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#specHash (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.

Since:

  • 2.0.0


149
150
151
# File 'lib/mongo/operation/shared/specifiable.rb', line 149

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.

Examples:

Are the operations equal?

operation == other

Since:

  • 2.0.0


161
162
163
164
# File 'lib/mongo/operation/shared/specifiable.rb', line 161

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.

Examples:

Determine whether the operation has an acknowledged write.

specifiable.array_filters

Since:

  • 2.5.2


559
560
561
# File 'lib/mongo/operation/shared/specifiable.rb', line 559

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.

Since:

  • 2.0.0


563
564
565
566
567
568
569
570
571
# File 'lib/mongo/operation/shared/specifiable.rb', line 563

def apply_collation(selector, connection, collation)
  if collation
    unless connection.features.collation_enabled?
      raise Error::UnsupportedCollation
    end
    selector = selector.merge(collation: collation)
  end
  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.

Since:

  • 2.5.2


546
547
548
549
# File 'lib/mongo/operation/shared/specifiable.rb', line 546

def array_filters(connection)
  sel = selector(connection)
  sel[Operation::ARRAY_FILTERS] if sel
end

#bypass_document_validationtrue, 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.

Examples:

Get the bypass_document_validation option.

specifiable.bypass_documentation_validation.

Since:

  • 2.2.0


368
369
370
# File 'lib/mongo/operation/shared/specifiable.rb', line 368

def bypass_document_validation
  spec[BYPASS_DOC_VALIDATION]
end

#coll_nameString

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.

Examples:

Get the collection name.

specifiable.coll_name

Since:

  • 2.0.0


235
236
237
# File 'lib/mongo/operation/shared/specifiable.rb', line 235

def coll_name
  spec.fetch(COLL_NAME)
end

#collationHash

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.

Examples:

Get the collation option.

specifiable.collation.

Since:

  • 2.4.0


380
381
382
# File 'lib/mongo/operation/shared/specifiable.rb', line 380

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.

Since:

  • 2.5.2


534
535
536
# File 'lib/mongo/operation/shared/specifiable.rb', line 534

def command(connection)
  selector(connection)
end

#cursor_countInteger

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.

Examples:

Get the cursor count.

specifiable.cursor_count

Since:

  • 2.0.0


175
176
177
# File 'lib/mongo/operation/shared/specifiable.rb', line 175

def cursor_count
  spec[CURSOR_COUNT]
end

#cursor_idInteger

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.

Examples:

Get the cursor id.

specifiable.cursor_id

Since:

  • 2.0.0


247
248
249
# File 'lib/mongo/operation/shared/specifiable.rb', line 247

def cursor_id
  spec[CURSOR_ID]
end

#db_nameString

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.

Examples:

Get the database name.

specifiable.db_name

Since:

  • 2.0.0


187
188
189
# File 'lib/mongo/operation/shared/specifiable.rb', line 187

def db_name
  spec[DB_NAME]
end

#deleteHash

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.

Examples:

Get the delete document.

specifiable.delete

Since:

  • 2.0.0


211
212
213
# File 'lib/mongo/operation/shared/specifiable.rb', line 211

def delete
  spec[DELETE]
end

#deletesArray<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.

Examples:

Get the deletes.

specifiable.deletes

Since:

  • 2.0.0


199
200
201
# File 'lib/mongo/operation/shared/specifiable.rb', line 199

def deletes
  spec[DELETES]
end

#documentsArray<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.

Examples:

Get the documents.

specifiable.documents

Since:

  • 2.0.0


223
224
225
# File 'lib/mongo/operation/shared/specifiable.rb', line 223

def documents
  spec[DOCUMENTS]
end

#indexHash

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.

Examples:

Get the index specification.

specifiable.index

Since:

  • 2.0.0


259
260
261
# File 'lib/mongo/operation/shared/specifiable.rb', line 259

def index
  spec[INDEX]
end

#index_idString

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.

Since:

  • 2.0.0


266
267
268
# File 'lib/mongo/operation/shared/specifiable.rb', line 266

def index_id
  spec[:index_id]
end

#index_nameString

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.

Examples:

Get the index name.

specifiable.index_name

Since:

  • 2.0.0


278
279
280
# File 'lib/mongo/operation/shared/specifiable.rb', line 278

def index_name
  spec[INDEX_NAME]
end

#indexesHash

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.

Examples:

Get the index specifications.

specifiable.indexes

Since:

  • 2.0.0


290
291
292
# File 'lib/mongo/operation/shared/specifiable.rb', line 290

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.

Examples:

Create the new specifiable operation.

Specifiable.new(spec)

See Also:

  • individual operations for the values they require in their specs.

Since:

  • 2.0.0


305
306
307
# File 'lib/mongo/operation/shared/specifiable.rb', line 305

def initialize(spec)
  @spec = spec
end

#max_time_msHash

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.

Examples:

Get the max time ms.

specifiable.max_time_ms

Since:

  • 2.2.5


356
357
358
# File 'lib/mongo/operation/shared/specifiable.rb', line 356

def max_time_ms
  spec[MAX_TIME_MS]
end

#namespaceString

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.

Examples:

Get the namespace.

specifiable.namespace

Since:

  • 2.1.0


501
502
503
# File 'lib/mongo/operation/shared/specifiable.rb', line 501

def namespace
  "#{db_name}.#{coll_name}"
end

#operation_idInteger

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.

Examples:

Get the operation id.

specifiable.operation_id

Since:

  • 2.1.0


318
319
320
# File 'lib/mongo/operation/shared/specifiable.rb', line 318

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.

Since:

  • 2.0.0


330
331
332
# File 'lib/mongo/operation/shared/specifiable.rb', line 330

def options(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.

Examples:

Get the ordered value, true is the default.

specifiable.ordered?

Since:

  • 2.1.0


489
490
491
# File 'lib/mongo/operation/shared/specifiable.rb', line 489

def ordered?
  !!(@spec.fetch(:ordered, true))
end

#readMongo::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.

Examples:

Get the read preference.

specifiable.read

Since:

  • 2.0.0


475
476
477
478
479
# File 'lib/mongo/operation/shared/specifiable.rb', line 475

def read
  @read ||= begin
    ServerSelector.get(spec[READ]) if spec[READ]
  end
end

#read_concernHash

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.

Note:

The document may include afterClusterTime.

Get the read concern document from the spec.

Examples:

Get the read concern.

specifiable.read_concern

Since:

  • 2.2.0


344
345
346
# File 'lib/mongo/operation/shared/specifiable.rb', line 344

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.

Since:

  • 2.0.0


393
394
395
# File 'lib/mongo/operation/shared/specifiable.rb', line 393

def selector(connection)
  spec[SELECTOR]
end

#sessionSession

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.

Examples:

Get the session.

specifiable.session

Since:

  • 2.5.0


513
514
515
# File 'lib/mongo/operation/shared/specifiable.rb', line 513

def session
  @spec[:session]
end

#to_returnInteger

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 number of documents to request from the server.

Examples:

Get the to return value from the spec.

specifiable.to_return

Since:

  • 2.0.0


405
406
407
# File 'lib/mongo/operation/shared/specifiable.rb', line 405

def to_return
  spec[TO_RETURN]
end

#txn_numInteger

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.

Examples:

Get the transaction number.

specifiable.txn_num

Since:

  • 2.5.0


525
526
527
# File 'lib/mongo/operation/shared/specifiable.rb', line 525

def txn_num
  @spec[:txn_num]
end

#updateHash

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.

Examples:

Get the update document.


Since:

  • 2.0.0


427
428
429
# File 'lib/mongo/operation/shared/specifiable.rb', line 427

def update
  spec[UPDATE]
end

#updatesArray<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.

Examples:

Get the update documents.


Since:

  • 2.0.0


416
417
418
# File 'lib/mongo/operation/shared/specifiable.rb', line 416

def updates
  spec[UPDATES]
end

#userAuth::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.

Examples:

Get the user.

specifiable.user

Since:

  • 2.0.0


439
440
441
# File 'lib/mongo/operation/shared/specifiable.rb', line 439

def user
  spec[USER]
end

#user_nameString

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.

Examples:

Get the user name.

specifiable.user_name

Since:

  • 2.0.


451
452
453
# File 'lib/mongo/operation/shared/specifiable.rb', line 451

def user_name
  spec[USER_NAME]
end

#write_concernMongo::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.

Examples:

Get the write concern.

specifiable.write_concern

Since:

  • 2.0.0


463
464
465
# File 'lib/mongo/operation/shared/specifiable.rb', line 463

def write_concern
  @spec[WRITE_CONCERN]
end