Exception: Mongo::Error::BulkWriteError
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
::Mongo::Error ,
StandardError
|
|
Instance Chain:
|
|
Inherits: |
Mongo::Error
|
Defined in: | lib/mongo/error/bulk_write_error.rb |
Overview
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
.
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.
Constant Summary
::Mongo::Error
- Inherited
BAD_VALUE, CODE, CURSOR_NOT_FOUND, ERR, ERRMSG, ERROR, TRANSIENT_TRANSACTION_ERROR_LABEL, UNKNOWN_ERROR, UNKNOWN_TRANSACTION_COMMIT_RESULT_LABEL, WRITE_CONCERN_ERROR, WRITE_CONCERN_ERRORS, WRITE_ERRORS
Class Method Summary
-
.new(result) ⇒ BulkWriteError
constructor
Instantiate the new exception.
::Mongo::Error
- Inherited
Instance Attribute Summary
- #result ⇒ BSON::Document readonly
::Mongo::Error
- Inherited
#change_stream_resumable? | Can the change stream on which this error occurred be resumed, provided the operation that triggered this error was a getMore? |
ChangeStreamResumable
- Included
#change_stream_resumable? | Can the change stream on which this error occurred be resumed, provided the operation that triggered this error was a getMore? |
WriteRetryable
- Included
Notable
- Included
#connection_global_id | Returns global id of the connection on which the error occurred. |
#generation | Returns connection pool generation for the connection on which the error occurred. |
#service_id | Returns service id for the connection on which the error occurred. |
Instance Method Summary
-
#build_message ⇒ String
private
Generates an error message when there are multiple write errors.
::Mongo::Error
- Inherited
#write_concern_error_label? | Does the write concern error have the given label? |
#write_concern_error_labels | The set of error labels associated with the write concern error. |
Labelable
- Included
#add_label | Adds the specified label to the error instance, if the label is not already in the set of labels. |
#label? | Does the error have the given label? |
#labels | Gets the set of labels associated with the error. |
Notable
- Included
#add_note, | |
#add_notes | Allows multiple notes to be added in a single call, for convenience. |
#notes | Returns an array of strings with additional information about the exception. |
#to_s, #notes_tail |
Constructor Details
.new(result) ⇒ BulkWriteError
Instantiate the new exception.
Instance Attribute Details
#result ⇒ BSON::Document
(readonly)
# File 'lib/mongo/error/bulk_write_error.rb', line 38
attr_reader :result
Instance Method Details
#build_message ⇒ String
(private)
Generates an error message when there are multiple write errors.
col has validation { ‘validator’ => { ‘x’ => { ‘$type’ => ‘string’ } } } col.insert_many([1
, 2
], ordered: false)
Multiple errors:
[121]: Document failed validation --
{"failingDocumentId":1,"details":{"operatorName":"$type",
"specifiedAs":{"x":{"$type":"string"}},"reason":"field was
missing"}};
[121]: Document failed validation --
{"failingDocumentId":2, "details":{"operatorName":"$type",
"specifiedAs":{"x":{"$type":"string"}}, "reason":"field was
missing"}}
# File 'lib/mongo/error/bulk_write_error.rb', line 76
def errors = @result['writeErrors'] return nil unless errors fragment = "" cut_short = false errors.first(10).each_with_index do |error, i| fragment += "; " if fragment.length > 0 fragment += "[#{error['code']}]: #{error['errmsg']}" fragment += " -- #{error['errInfo'].to_json}" if error['errInfo'] if fragment.length > 3000 cut_short = i < [9, errors.length].min break end end fragment += '...' if errors.length > 10 || cut_short if errors.length > 1 fragment = "Multiple errors: #{fragment}" end fragment end