module Mongo::Operation::Write::Bulk::Bulkable
Provides common behavior for bulk write operations. Note that validate! is not called on operation results because they are merged at a higher level.
@since 2.1.0
Public Instance Methods
execute(server)
click to toggle source
Execute the bulk operation.
@example Execute the operation.
operation.execute(server)
@param [ Mongo::Server ] server The server to send this operation to.
@return [ Result ] The operation result.
@since 2.0.0
# File lib/mongo/operation/write/bulk/bulkable.rb, line 37 def execute(server) result = execute_write_command(server) server.update_cluster_time(result) session.process(result) if session result end
Private Instance Methods
execute_message(server)
click to toggle source
# File lib/mongo/operation/write/bulk/bulkable.rb, line 46 def execute_message(server) replies = messages.map do |m| server.with_connection do |connection| result = self.class::LegacyResult.new(connection.dispatch([ m, gle ].compact, operation_id)) if stop_sending?(result) return result else result.reply end end end self.class::LegacyResult.new(replies.compact.empty? ? nil : replies) end
gle()
click to toggle source
# File lib/mongo/operation/write/bulk/bulkable.rb, line 64 def gle wc = write_concern || WriteConcern.get(WriteConcern::DEFAULT) gle_message = ( ordered? && wc.get_last_error.nil? ) ? WriteConcern.get(WriteConcern::DEFAULT).get_last_error : wc.get_last_error if gle_message Protocol::Query.new( db_name, Database::COMMAND, gle_message, options.merge(limit: -1) ) end end
stop_sending?(result)
click to toggle source
# File lib/mongo/operation/write/bulk/bulkable.rb, line 60 def stop_sending?(result) ordered? && !result.successful? end