Overview
This page describes errors you might encounter when using the MongoDB Rust Driver to perform MongoDB operations. Once you understand the types of operation errors that the driver raises, you can take appropriate actions to either handle them or correct the error-causing code.
Note
This page addresses only operation error handling. If you encounter any other issues with MongoDB or the driver, visit the following resources:
Connection Troubleshooting for potential solutions to issues you might encounter when connecting to a MongoDB deployment
Issues & Help page for information about reporting bugs, contributing to the driver, and finding more resources
The MongoDB Stack Overflow tag or the MongoDB Reddit community for questions, discussions, or general technical support
Error Type
If the driver encounters an error while performing an operation, it returns an error of the Error type.
The Error type contains the kind field, which describes the type of
error that occurred. The kind field has a value of enum ErrorKind. The ErrorKind enum has
variants for different kinds of errors, including the following:
InvalidArgument: you provided an invalid argument to a methodAuthentication: the driver encountered an error during authenticationServerSelection: the client couldn't select a server for the operationWrite: an error occurred during a write operationTransaction: an error occurred during a transaction
For example, if you attempt to perform an insert operation that
duplicates an _id field value that is already in the collection,
the driver returns an Error instance and prints the following error
message:
Error: Error { kind: Write(WriteError(WriteError { code: 11000, code_name: None, message: "E11000 duplicate key error collection: db.test_coll index: _id_ dup key: { _id: 1 }", details: None })), labels: {}, wire_version: None, source: None }
In the preceding error message, the value of the kind field is
Write. To learn more about this type of error, see the Write
Error Types section of this guide.
Connection Errors
A concurrent operation error might clear the connection pool,
interrupting your connection to the server. In this
situation, the driver raises an Error type in which the value of the
kind field is ConnectionPoolCleared. The error message describes
the reason that the concurrent operation failed.
To learn how to adjust your connection pool to address this error, see Tuning Your Connection Pool Settings in the Server manual.
Depending on the circumstances that produce the error, the driver might
add a RetryableWriteError label to the error, as shown in the
following error message:
Error { kind: ConnectionPoolCleared { message: "Connection pool for localhost:27017 cleared because another operation failed with: Kind: I/O error: timed out, labels: {}" }, labels: {"RetryableWriteError"}, wire_version: None, source: None }
This label indicates that the error is write-retryable, which means that the driver makes one retry attempt.
Write Error Types
When the driver experiences an error while performing a write operation,
it raises an Error instance with a kind field value of Write.
The body of the Write variant is the enum WriteFailure, which
takes a value of type WriteError or
WriteConcernError.
Write Concern Error
The driver raises a WriteConcernError error when you perform a write
operation and the driver cannot satisfy the specified write concern. For
example, if you specify a write concern of majority for
operations on a replica set with three nodes, the driver returns
this error if the write operation propagates only to one node.
To learn more about write concerns, see Write Concern in the Server manual.
Write Error
The driver raises a WriteError error for any errors that it
encounters when performing a write operation that are not related to
satisfying the write concern. Because there are many causes for this
error, the WriteError type contains fields that describe the type of
write error and reason for the error.
For example, the driver raises a WriteError error if you attempt to
insert a document into a collection that violates the collection's
schema validation rules. Suppose the collection has a rule where the
value of the quantity field must be an int type. If you
attempt to insert a document where the value of quantity is
"three", the driver prints the following error message:
Error: Error { kind: Write(WriteError(WriteError { code: 121, code_name: None, message: "Document failed validation", details: Some(Document({"failingDocumentId": Int32(1), "details": Document({"operatorName": String("$jsonSchema"), "title": String("Numerical Validation"), "schemaRulesNotSatisfied": Array(...)})})) })), labels: {}, wire_version: None, source: None }
In the preceding error message, the message field describes the
reason for the error, and the details field provides specific
details about the failing operation. To address this error, you must
either revise the document to adhere to the schema validation rules or
bypass validation.
To learn more about schema validation, see the guide on Schema Validation.