class Mongo::BulkWrite::ResultCombiner
Combines bulk write results together.
@api private
@since 2.1.0
Attributes
count[R]
@return [ Integer ] count The number of documents in the entire batch.
results[R]
@return [ Hash ] results The results hash.
Public Class Methods
new()
click to toggle source
Create the new result combiner.
@api private
@example Create the result combiner.
ResultCombiner.new
@since 2.1.0
# File lib/mongo/bulk_write/result_combiner.rb, line 39 def initialize @results = {} @count = 0 end
Public Instance Methods
combine!(result, count)
click to toggle source
Adds a result to the overall results.
@api private
@example Add the result.
combiner.combine!(result, count)
@param [ Operation::Result ] result The result to combine. @param [ Integer ] count The count of requests in the batch.
@since 2.1.0
# File lib/mongo/bulk_write/result_combiner.rb, line 55 def combine!(result, count) combine_counts!(result) combine_ids!(result) combine_errors!(result) @count += count end
result()
click to toggle source
Get the final result.
@api private
@example Get the final result.
combinator.result
@return [ BulkWrite::Result ] The final result.
@since 2.1.0
# File lib/mongo/bulk_write/result_combiner.rb, line 72 def result BulkWrite::Result.new(results).validate! end
Private Instance Methods
combine_counts!(result)
click to toggle source
# File lib/mongo/bulk_write/result_combiner.rb, line 78 def combine_counts!(result) Result::FIELDS.each do |field| if result.respond_to?(field) && value = result.send(field) results.merge!(field => (results[field] || 0) + value) end end end
combine_errors!(result)
click to toggle source
# File lib/mongo/bulk_write/result_combiner.rb, line 97 def combine_errors!(result) combine_write_errors!(result) combine_write_concern_errors!(result) end
combine_ids!(result)
click to toggle source
# File lib/mongo/bulk_write/result_combiner.rb, line 86 def combine_ids!(result) if result.respond_to?(Result::INSERTED_IDS) results[Result::INSERTED_IDS] = (results[Result::INSERTED_IDS] || []) + result.inserted_ids end if result.respond_to?(Result::UPSERTED) results[Result::UPSERTED_IDS] = (results[Result::UPSERTED_IDS] || []) + result.upserted.map{ |doc| doc['_id'] } end end
combine_write_concern_errors!(result)
click to toggle source
# File lib/mongo/bulk_write/result_combiner.rb, line 112 def combine_write_concern_errors!(result) if write_concern_errors = result.aggregate_write_concern_errors(count) results[Error::WRITE_CONCERN_ERRORS] = (results[Error::WRITE_CONCERN_ERRORS] || []) + write_concern_errors end end
combine_write_errors!(result)
click to toggle source
# File lib/mongo/bulk_write/result_combiner.rb, line 102 def combine_write_errors!(result) if write_errors = result.aggregate_write_errors(count) results.merge!( Error::WRITE_ERRORS => ((results[Error::WRITE_ERRORS] || []) << write_errors).flatten ) else result.validate! end end