module Mongo::Operation::Write::Bulk::LegacyMergable
This module contains common functionality for merging results from writes during a bulk operation. Used for server versions < 2.6.
@since 2.0.0
Public Instance Methods
aggregate_write_concern_errors(count)
click to toggle source
Aggregate the write concern errors returned from this result.
@example Aggregate the write concern errors.
result.aggregate_write_concern_errors(4)
@param [ Integer ] count The number of documents already executed.
@return [ Array ] The aggregate write concern errors.
@since 2.0.0
# File lib/mongo/operation/write/bulk/legacy_mergable.rb, line 58 def aggregate_write_concern_errors(count) @replies.each_with_index.reduce(nil) do |errors, (reply, i)| if error = reply_write_errors?(reply) errors ||= [] if note = reply.documents.first['wnote'] || reply.documents.first['jnote'] code = reply.documents.first['code'] || Error::BAD_VALUE error_string = "#{code}: #{note}" elsif error == 'timeout' code = reply.documents.first['code'] || Error::UNKNOWN_ERROR error_string = "#{code}: #{error}" end errors << { 'errmsg' => error_string, 'index' => count + i, 'code' => code } if error_string end errors end if @replies end
aggregate_write_errors(count)
click to toggle source
Aggregate the write errors returned from this result.
@example Aggregate the write errors.
result.aggregate_write_errors(0)
@param [ Integer ] count The number of documents already executed.
@return [ Array ] The aggregate write errors.
@since 2.0.0
# File lib/mongo/operation/write/bulk/legacy_mergable.rb, line 36 def aggregate_write_errors(count) @replies.each_with_index.reduce(nil) do |errors, (reply, i)| if reply_write_errors?(reply) errors ||= [] errors << { 'errmsg' => reply.documents.first[Error::ERROR], 'index' => count + i, 'code' => reply.documents.first[Error::CODE] } end errors end if @replies end
Private Instance Methods
reply_write_errors?(reply)
click to toggle source
# File lib/mongo/operation/write/bulk/legacy_mergable.rb, line 79 def reply_write_errors?(reply) reply.documents.first[Error::ERROR] || reply.documents.first[Error::ERRMSG] end