module Mongo::Operation::Write
Shared behavior of operations that write (update, insert, delete).
@since 2.5.2 @api private
Public Instance Methods
Execute the bulk write operation.
@param [ Mongo::Server::Connection
] connection The connection over
which to send the operation.
@param [ Operation::Context
] context The operation context.
@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 70 def bulk_execute(connection, context:) Lint.assert_type(connection, Server::Connection) if connection.features.op_msg_enabled? self.class::OpMsg.new(spec).execute(connection, context: context).bulk_result else self.class::Command.new(spec).execute(connection, context: context).bulk_result end end
Execute the operation.
@param [ Mongo::Server
] server The server to send the operation to. @param [ Operation::Context
] context The operation context.
@return [ Mongo::Operation::Result
] The operation result.
@since 2.5.2
# File lib/mongo/operation/shared/write.rb, line 37 def execute(server, context:) server.with_connection(connection_global_id: context.connection_global_id) do |connection| execute_with_connection(connection, context: context) end end
Execute the operation.
@param [ Mongo::Server::Connection
] connection The connection to send
the operation through.
@param [ Operation::Context
] context The operation context. @param [ Hash ] options Operation
execution options.
@return [ Mongo::Operation::Result
] The operation result.
# File lib/mongo/operation/shared/write.rb, line 51 def execute_with_connection(connection, context:) validate!(connection) op = self.class::OpMsg.new(spec) result = op.execute(connection, context: context) validate_result(result, connection, context) end
Private Instance Methods
# File lib/mongo/operation/shared/write.rb, line 82 def validate!(connection) if !acknowledged_write? if collation raise Error::UnsupportedCollation.new( Error::UnsupportedCollation::UNACKNOWLEDGED_WRITES_MESSAGE) end if array_filters(connection) raise Error::UnsupportedArrayFilters.new( Error::UnsupportedArrayFilters::UNACKNOWLEDGED_WRITES_MESSAGE) end end end