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(context)
click to toggle source
Execute the bulk operation.
@example Execute the operation.
operation.execute(context)
@param [ Mongo::Server::Context ] context The context for this operation.
@return [ Result ] The operation result.
@since 2.0.0
# File lib/mongo/operation/write/bulk/bulkable.rb, line 37 def execute(context) if context.features.write_command_enabled? execute_write_command(context) else execute_message(context) end end
Private Instance Methods
execute_message(context)
click to toggle source
# File lib/mongo/operation/write/bulk/bulkable.rb, line 47 def execute_message(context) replies = messages.map do |m| context.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 65 def gle wc = write_concern || WriteConcern.get(WriteConcern::DEFAULT) gle_message = ( ordered? && wc.get_last_error.nil? ) ? Mongo::WriteConcern.get(Mongo::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 61 def stop_sending?(result) ordered? && !result.successful? end