123456789_123456789_123456789_123456789_123456789_

Module: Mongo::Operation::Specifiable Private

Do not use. This module is for internal use only.

Overview

This module contains common functionality for convenience methods getting various values from the spec.

Since:

  • 2.0.0

Constant Summary

Instance Attribute Summary

Instance Method Summary

Instance Attribute Details

#acknowledged_write?Boolean (readonly)

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

[ GitHub ]

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

def acknowledged_write?
  write_concern.nil? || write_concern.acknowledged?
end

#ordered?true, false (readonly)

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

[ GitHub ]

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

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

#specHash (readonly)

Returns:

  • (Hash)

    spec The specification for the operation.

Since:

  • 2.0.0

[ GitHub ]

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

attr_reader :spec

Instance Method Details

#==(other) ⇒ true, false Also known as: #eql?

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

[ GitHub ]

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

def ==(other)
  return false unless other.is_a?(Specifiable)
  spec == other.spec
end

#apply_collation(selector, connection, collation)

Since:

  • 2.0.0

[ GitHub ]

  
# 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

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

[ GitHub ]

  
# 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

Whether or not to bypass document level validation.

Examples:

Get the bypass_document_validation option.

specifiable.bypass_documentation_validation.

Returns:

  • (true, false)

    Whether to bypass document level validation.

Since:

  • 2.2.0

[ GitHub ]

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

def bypass_document_validation
  spec[BYPASS_DOC_VALIDATION]
end

#coll_nameString

The name of the collection to which the operation should be sent.

Examples:

Get the collection name.

specifiable.coll_name

Returns:

Since:

  • 2.0.0

[ GitHub ]

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

def coll_name
  spec.fetch(COLL_NAME)
end

#collationHash

The collation to apply to the operation.

Examples:

Get the collation option.

specifiable.collation.

Returns:

  • (Hash)

    The collation document.

Since:

  • 2.4.0

[ GitHub ]

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

def collation
  send(self.class::IDENTIFIER).first[COLLATION]
end

#command(connection) ⇒ Hash

The command.

Returns:

  • (Hash)

    The command.

Since:

  • 2.5.2

[ GitHub ]

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

def command(connection)
  selector(connection)
end

#cursor_countInteger

Get the cursor count from the spec.

Examples:

Get the cursor count.

specifiable.cursor_count

Returns:

  • (Integer)

    The cursor count.

Since:

  • 2.0.0

[ GitHub ]

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

def cursor_count
  spec[CURSOR_COUNT]
end

#cursor_idInteger

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

[ GitHub ]

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

def cursor_id
  spec[CURSOR_ID]
end

#db_nameString

The name of the database to which the operation should be sent.

Examples:

Get the database name.

specifiable.db_name

Returns:

Since:

  • 2.0.0

[ GitHub ]

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

def db_name
  spec[DB_NAME]
end

#deleteHash

Get the delete document from the specification.

Examples:

Get the delete document.

specifiable.delete

Returns:

  • (Hash)

    The delete document.

Since:

  • 2.0.0

[ GitHub ]

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

def delete
  spec[DELETE]
end

#deletesArray<BSON::Document>

Get the deletes from the specification.

Examples:

Get the deletes.

specifiable.deletes

Returns:

  • (Array<BSON::Document>)

    The deletes.

Since:

  • 2.0.0

[ GitHub ]

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

def deletes
  spec[DELETES]
end

#documentsArray<BSON::Document>

The documents to in the specification.

Examples:

Get the documents.

specifiable.documents

Returns:

  • (Array<BSON::Document>)

    The documents.

Since:

  • 2.0.0

[ GitHub ]

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

def documents
  spec[DOCUMENTS]
end

#eql?(other)

Alias for #==.

[ GitHub ]

  
# File 'lib/mongo/operation/shared/specifiable.rb', line 165

alias_method :eql?, :==

#indexHash

Get the index from the specification.

Examples:

Get the index specification.

specifiable.index

Returns:

  • (Hash)

    The index specification.

Since:

  • 2.0.0

[ GitHub ]

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

def index
  spec[INDEX]
end

#index_idString

Get the index id from the spec.

Returns:

  • (String)

    The index id.

Since:

  • 2.0.0

[ GitHub ]

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

def index_id
  spec[:index_id]
end

#index_nameString

Get the index name from the spec.

Examples:

Get the index name.

specifiable.index_name

Returns:

  • (String)

    The index name.

Since:

  • 2.0.0

[ GitHub ]

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

def index_name
  spec[INDEX_NAME]
end

#indexesHash

Get the indexes from the specification.

Examples:

Get the index specifications.

specifiable.indexes

Returns:

  • (Hash)

    The index specifications.

Since:

  • 2.0.0

[ GitHub ]

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

def indexes
  spec[INDEXES]
end

#initialize(spec)

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

[ GitHub ]

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

def initialize(spec)
  @spec = spec
end

#max_time_msHash

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

[ GitHub ]

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

def max_time_ms
  spec[MAX_TIME_MS]
end

#namespaceString

The namespace, consisting of the db name and collection name.

Examples:

Get the namespace.

specifiable.namespace

Returns:

  • (String)

    The namespace.

Since:

  • 2.1.0

[ GitHub ]

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

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

#operation_idInteger

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

[ GitHub ]

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

def operation_id
  spec[OPERATION_ID]
end

#options(connection) ⇒ Hash

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

[ GitHub ]

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

def options(connection)
  spec[OPTIONS] || {}
end

#readMongo::ServerSelector

The read preference for this operation.

Examples:

Get the read preference.

specifiable.read

Returns:

Since:

  • 2.0.0

[ GitHub ]

  
# File 'lib/mongo/operation/shared/specifiable.rb', line 475

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

#read_concernHash

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

[ GitHub ]

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

def read_concern
  spec[READ_CONCERN]
end

#selector(connection) ⇒ Hash

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

[ GitHub ]

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

def selector(connection)
  spec[SELECTOR]
end

#sessionSession

The session to use for the operation.

Examples:

Get the session.

specifiable.session

Returns:

Since:

  • 2.5.0

[ GitHub ]

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

def session
  @spec[:session]
end

#to_returnInteger

The number of documents to request from the server.

Examples:

Get the to return value from the spec.

specifiable.to_return

Returns:

  • (Integer)

    The number of documents to return.

Since:

  • 2.0.0

[ GitHub ]

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

def to_return
  spec[TO_RETURN]
end

#txn_numInteger

The transaction number for the operation.

Examples:

Get the transaction number.

specifiable.txn_num

Returns:

  • (Integer)

    The transaction number.

Since:

  • 2.5.0

[ GitHub ]

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

def txn_num
  @spec[:txn_num]
end

#updateHash

The update document from the spec.

Examples:

Get the update document.

Returns:

  • (Hash)

    The update document.

Since:

  • 2.0.0

[ GitHub ]

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

def update
  spec[UPDATE]
end

#updatesArray<BSON::Document>

The update documents from the spec.

Examples:

Get the update documents.

Returns:

  • (Array<BSON::Document>)

    The update documents.

Since:

  • 2.0.0

[ GitHub ]

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

def updates
  spec[UPDATES]
end

#userAuth::User

The user for user related operations.

Examples:

Get the user.

specifiable.user

Returns:

Since:

  • 2.0.0

[ GitHub ]

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

def user
  spec[USER]
end

#user_nameString

The user name from the specification.

Examples:

Get the user name.

specifiable.user_name

Returns:

  • (String)

    The user name.

Since:

  • 2.0.

[ GitHub ]

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

def user_name
  spec[USER_NAME]
end

#write_concernMongo::WriteConcern

The write concern to use for this operation.

Examples:

Get the write concern.

specifiable.write_concern

Returns:

Since:

  • 2.0.0

[ GitHub ]

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

def write_concern
  @spec[WRITE_CONCERN]
end