Module: Mongo::Operation::Write::Bulk::Mergable

Included in:
Delete::Result, Insert::Result, Update::Result
Defined in:
lib/mongo/operation/write/bulk/mergable.rb

Overview

This module contains common functionality for merging results from write commands during a bulk operation. Used for server versions >= 2.6.

Since:

  • 2.0.0

Instance Method Summary collapse

Instance Method Details

#aggregate_write_concern_errors(count) ⇒ Array

Aggregate the write concern errors returned from this result.

Examples:

Aggregate the write concern errors.

result.aggregate_write_concern_errors(100)

Parameters:

  • count (Integer)

    The number of documents already executed.

Returns:

  • (Array)

    The aggregate write concern errors.

Since:

  • 2.0.0



57
58
59
60
61
62
63
64
65
66
# File 'lib/mongo/operation/write/bulk/mergable.rb', line 57

def aggregate_write_concern_errors(count)
  @replies.each_with_index.reduce(nil) do |errors, (reply, _)|
    if write_concern_errors = reply.documents.first[Error::WRITE_CONCERN_ERRORS]
      (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) ⇒ Array

Aggregate the write errors returned from this result.

Examples:

Aggregate the write errors.

result.aggregate_write_errors(0)

Parameters:

  • count (Integer)

    The number of documents already executed.

Returns:

  • (Array)

    The aggregate write errors.

Since:

  • 2.0.0



36
37
38
39
40
41
42
43
44
45
# File 'lib/mongo/operation/write/bulk/mergable.rb', line 36

def aggregate_write_errors(count)
  @replies.reduce(nil) do |errors, reply|
    if write_errors = reply.documents.first[Error::WRITE_ERRORS]
      wes = write_errors.collect do |we|
        we.merge!('index' => count + we['index'])
      end
      (errors || []) << wes if wes
    end
  end
end