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? |
#network_error? |
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