class Mongo::Error::BulkWriteError

Exception raised if there are write errors upon executing a bulk operation.

Unlike OperationFailure, BulkWriteError does not currently expose individual error components (such as the error code). The result document (which can be obtained using the result attribute) provides detailed error information and can be examined by the application if desired.

@note A bulk operation that resulted in a BulkWriteError may have

written some of the documents to the database. If the bulk write
was unordered, writes may have also continued past the write that
produced a BulkWriteError.

@since 2.0.0

Attributes

result[R]

@return [ BSON::Document ] result The error result.

Public Class Methods

new(result) click to toggle source

Instantiate the new exception.

@example Instantiate the exception.

Mongo::Error::BulkWriteError.new(response)

@param [ Hash ] result A processed response from the server

reporting results of the operation.

@since 2.0.0

Calls superclass method Mongo::Error::new
# File lib/mongo/error/bulk_write_error.rb, line 49
def initialize(result)
  @result = result
  # Exception constructor behaves differently for a nil argument and
  # for no argument. Avoid passing nil explicitly.
  super(*[build_message])
end

Private Instance Methods

build_message() click to toggle source
# File lib/mongo/error/bulk_write_error.rb, line 58
def build_message
  errors = @result['writeErrors']
  return nil unless errors

  fragment = errors.first(10).map do |error|
    "[#{error['code']}]: #{error['errmsg']}"
  end.join('; ')

  fragment += '...' if errors.length > 10

  if errors.length > 1
    fragment = "Multiple errors: #{fragment}"
  end

  fragment
end