module Mongo::Operation::Write

Shared behavior of operations that write (update, insert, delete).

@since 2.5.2

Public Instance Methods

bulk_execute(server) click to toggle source

Execute the bulk write operation.

@example

operation.bulk_execute(server)

@param [ Mongo::Server ] server The server to send the operation to.

@return [ Mongo::Operation::Delete::BulkResult,

Mongo::Operation::Insert::BulkResult,
Mongo::Operation::Update::BulkResult ] The bulk result.

@since 2.5.2

# File lib/mongo/operation/shared/write.rb, line 59
def bulk_execute(server)
  if server.features.op_msg_enabled?
    self.class::OpMsg.new(spec).execute(server).bulk_result
  else
    self.class::Command.new(spec).execute(server).bulk_result
  end
end
execute(server) click to toggle source

Execute the operation.

@example

operation.execute(server)

@param [ Mongo::Server ] server The server to send the operation to.

@return [ Mongo::Operation::Result ] The operation result.

@since 2.5.2

# File lib/mongo/operation/shared/write.rb, line 35
def execute(server)
  validate!
  result = if server.features.op_msg_enabled?
      self.class::OpMsg.new(spec).execute(server)
    elsif !acknowledged_write?
      self.class::Legacy.new(spec).execute(server)
    else
      self.class::Command.new(spec).execute(server)
    end
  validate_result(result, server)
end

Private Instance Methods

validate!() click to toggle source
# File lib/mongo/operation/shared/write.rb, line 69
def validate!
  if !acknowledged_write?
    if collation
      raise Error::UnsupportedCollation.new(
          Error::UnsupportedCollation::UNACKNOWLEDGED_WRITES_MESSAGE)
    end
    if array_filters
      raise Error::UnsupportedArrayFilters.new(
          Error::UnsupportedArrayFilters::UNACKNOWLEDGED_WRITES_MESSAGE)
    end
  end
end