module Mongo::Operation::Result::Aggregatable

Defines custom behavior of bulk write results

@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(100)

@param [ Integer ] count The number of documents already executed.

@return [ Array ] The aggregate write concern errors.

@since 2.0.0

# File lib/mongo/operation/shared/result/aggregatable.rb, line 56
def aggregate_write_concern_errors(count)
  return unless @replies
  @replies.each_with_index.reduce(nil) do |errors, (reply, _)|
    if write_concern_errors = reply.documents.first['writeConcernErrors']
      (errors || []) << write_concern_errors.reduce(nil) do |errs, wce|
        wce.merge!('index' => count + wce['index'])
        (errs || []) << write_concern_error
      end
    end
  end
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/shared/result/aggregatable.rb, line 34
def aggregate_write_errors(count)
  return unless @replies
  @replies.reduce(nil) do |errors, reply|
    if write_errors = reply.documents.first['writeErrors']
      wes = write_errors.collect do |we|
        we.merge!('index' => count + we['index'])
      end
      (errors || []) << wes if wes
    end
  end
end