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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

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.

Returns:

  • (Hash)

    spec The specification for the operation.

Since:

  • 2.0.0



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.

Examples:

Are the operations equal?

operation == other

Parameters:

  • other (Object)

    The other operation.

Returns:

  • (true, false)

    Whether the objects are equal.

Since:

  • 2.0.0



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.

Examples:

Determine whether the operation has an acknowledged write.

specifiable.array_filters

Returns:

  • (Boolean)

    Whether or not the operation has an acknowledged write concern.

Since:

  • 2.5.2



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.

Since:

  • 2.0.0



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.

Parameters:

  • connection (Server::Connection)

    The connection that the operation will be executed on.

Returns:

  • (Hash | nil)

    The array filters.

Since:

  • 2.5.2



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_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_document_validation.

Returns:

  • (true, false)

    Whether to bypass document level validation.

Since:

  • 2.2.0



361
362
363
# File 'lib/mongo/operation/shared/specifiable.rb', line 361

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

Returns:

  • (String)

    Collection name.

Since:

  • 2.0.0



228
229
230
# File 'lib/mongo/operation/shared/specifiable.rb', line 228

def coll_name
  spec[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.

Returns:

  • (Hash)

    The collation document.

Since:

  • 2.4.0



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.

Returns:

  • (Hash)

    The command.

Since:

  • 2.5.2



517
518
519
# File 'lib/mongo/operation/shared/specifiable.rb', line 517

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

Returns:

  • (Integer)

    The cursor count.

Since:

  • 2.0.0



168
169
170
# File 'lib/mongo/operation/shared/specifiable.rb', line 168

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

Returns:

  • (Integer)

    The cursor id.

Since:

  • 2.0.0



240
241
242
# File 'lib/mongo/operation/shared/specifiable.rb', line 240

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

Returns:

  • (String)

    Database name.

Since:

  • 2.0.0



180
181
182
# File 'lib/mongo/operation/shared/specifiable.rb', line 180

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

Returns:

  • (Hash)

    The delete document.

Since:

  • 2.0.0



204
205
206
# File 'lib/mongo/operation/shared/specifiable.rb', line 204

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

Returns:

  • (Array<BSON::Document>)

    The deletes.

Since:

  • 2.0.0



192
193
194
# File 'lib/mongo/operation/shared/specifiable.rb', line 192

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

Returns:

  • (Array<BSON::Document>)

    The documents.

Since:

  • 2.0.0



216
217
218
# File 'lib/mongo/operation/shared/specifiable.rb', line 216

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

Returns:

  • (Hash)

    The index specification.

Since:

  • 2.0.0



252
253
254
# File 'lib/mongo/operation/shared/specifiable.rb', line 252

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.

Returns:

  • (String)

    The index id.

Since:

  • 2.0.0



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

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

Returns:

  • (String)

    The index name.

Since:

  • 2.0.0



271
272
273
# File 'lib/mongo/operation/shared/specifiable.rb', line 271

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

Returns:

  • (Hash)

    The index specifications.

Since:

  • 2.0.0



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.

Examples:

Create the new specifiable operation.

Specifiable.new(spec)

Parameters:

  • spec (Hash)

    The operation specification.

See Also:

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

Since:

  • 2.0.0



298
299
300
# File 'lib/mongo/operation/shared/specifiable.rb', line 298

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

Returns:

  • (Hash)

    The max time ms value.

Since:

  • 2.2.5



349
350
351
# File 'lib/mongo/operation/shared/specifiable.rb', line 349

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

Returns:

  • (String)

    The namespace.

Since:

  • 2.1.0



480
481
482
# File 'lib/mongo/operation/shared/specifiable.rb', line 480

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

Returns:

  • (Integer)

    The operation id.

Since:

  • 2.1.0



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.

Parameters:

  • connection (Server::Connection)

    The connection that the operation will be executed on.

Returns:

  • (Hash)

    The options.

Since:

  • 2.0.0



323
324
325
# File 'lib/mongo/operation/shared/specifiable.rb', line 323

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?

Returns:

  • (true, false)

    Whether the operation is ordered.

Since:

  • 2.1.0



468
469
470
# File 'lib/mongo/operation/shared/specifiable.rb', line 468

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

Returns:

Since:

  • 2.0.0



456
457
458
# File 'lib/mongo/operation/shared/specifiable.rb', line 456

def read
  @read ||= (ServerSelector.get(spec[READ]) if spec[READ])
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

Returns:

  • (Hash)

    The read concern document.

Since:

  • 2.2.0



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.

Parameters:

  • connection (Server::Connection)

    The connection that the operation will be executed on.

Returns:

  • (Hash)

    The selector spec.

Since:

  • 2.0.0



386
387
388
# File 'lib/mongo/operation/shared/specifiable.rb', line 386

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

Returns:

Since:

  • 2.5.0



492
493
494
# File 'lib/mongo/operation/shared/specifiable.rb', line 492

def session
  @spec[:session]
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

Returns:

  • (Integer)

    The transaction number.

Since:

  • 2.5.0



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.

Since:

  • 2.0.0



508
509
510
# File 'lib/mongo/operation/shared/specifiable.rb', line 508

def txn_num=(num)
  @spec[:txn_num] = 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.

Returns:

  • (Hash)

    The update document.

Since:

  • 2.0.0



408
409
410
# File 'lib/mongo/operation/shared/specifiable.rb', line 408

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.

Returns:

  • (Array<BSON::Document>)

    The update documents.

Since:

  • 2.0.0



397
398
399
# File 'lib/mongo/operation/shared/specifiable.rb', line 397

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

Returns:

Since:

  • 2.0.0



420
421
422
# File 'lib/mongo/operation/shared/specifiable.rb', line 420

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

Returns:

  • (String)

    The user name.

Since:

  • 2.0.



432
433
434
# File 'lib/mongo/operation/shared/specifiable.rb', line 432

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

Returns:

Since:

  • 2.0.0



444
445
446
# File 'lib/mongo/operation/shared/specifiable.rb', line 444

def write_concern
  @spec[WRITE_CONCERN]
end