What's New
On this page
Learn about new features, improvements, and fixes introduced in the following versions of the MongoDB Rust Driver:
What's New in 3.1
The Rust driver v3.1 release includes the following features, improvements, and fixes:
Adds support for more than one Key Management Service (KMS) provider of the same type. To learn more about KMS providers, see Queryable Encryption in the MongoDB Server manual.
Adds support for v2 of the Queryable Encryption range protocol. Range indexes for Queryable Encryption are now GA.
Adds support for the
type
field when creating indexes. To learn more about creating indexes, see Indexes in the MongoDB Server manual.Implements the Happy Eyeballs algorithm for managing TCP connections. To learn more about this algorithm, see the Rust documentation for the happy_eyeballs crate.
The driver publishes a
TopologyDescriptionChangedEvent
event when a topology closes.
To learn more about this release, see the v3.1 Release Notes on GitHub.
What's New in 3.0.1
The Rust driver v3.0.1 release includes the following features, improvements, and fixes:
Fixes an issue in which aggregations wouldn't compile when run within explicit sessions and also implemented custom types.
Fixes an issue in which the
Collection::watch()
method didn't use the type parameter of theCollection
instance it was run on.
To learn more about this release, see the v3.0.1 Release Notes on GitHub.
What's New in 3.0
The Rust driver v3.0 release includes the following features, improvements, and fixes:
Implements a fluent API, which introduces the following syntax changes for passing options and starting sessions:
To set asynchronous method options, chain option builder methods directly to the method call instead of passing an options struct parameter.
To set synchronous method options, chain option builder methods to the method call, then call the
run()
method.If you must construct a separate options struct, chain the
with_options()
method to the method call and pass your options struct as a parameter.To start a session, chain the
session()
method to the method call instead of using a separate method that has a_with_session
suffix.
Adds support for bulk write operations. To learn more about these operations, see the Bulk Operations guide.
Introduces the
EventHandler
type to reduce the amount of boilerplate code required for event monitoring. For examples that use theEventHandler
type, see the Monitoring guides.Removes support for the
async-std
asynchronous runtime. To learn more about this change, see the Configure the Asynchronous Runtime section of the Asynchronous and Synchronous APIs guide.Requires the use of a
compat
feature if a Rust driver application is compiled with theno-default-features
command line flag. Therustls
anddns-resolution
features are now optional.Removes support for the
bson-*
driver features. You can select these features by includingbson
as a direct dependency in your application.Removes support for read and write concern constants. Instead, use helper methods to set
ReadConcern
andWriteConcern
values.Adds
Send + Sync
constraints to theCollection<T>
type.Removes the
ClientOptions::compressor
field if no compressor features are enabled.Changes the type of
ReadPreferenceOptions
fields. These fields now have aOption<ReadPreferenceOptions>
type.Removes the
CollectionOptions::human_readable_serialization
option. Instead, use thebson::HumanReadable
wrapper type to serialize user data into human-readable form.Adds support for value conversion through the
Into
trait for all option struct builders.Renames the
comment_bson
field tocomment
forAggregateOptions
,FindOptions
, andFindOneOptions
structs.
To learn more about this release, see the v3.0 Migration Guide on GitHub.
What's New in 2.8
The Rust driver v2.8 release includes the following features, improvements, and fixes:
Adds MongoDB Atlas Search index management methods. To learn more about these methods, see the Atlas Search Indexes guide.
Improves network connectivity and operation reliability by implementing the following behaviors:
Performs retries on a greater range of error types that the driver encounters.
Avoids retries for
mongos
instances experiencing network connectivity issues.
To learn more about this release, see the v2.8.0 Release Highlights on GitHub.
What's New in 2.7
The Rust driver v2.7 release includes the following features, improvements, and fixes:
Adds the
human_readable_serialization
option to theCollectionOptions
struct. This option instructs the driver to serialize values passed to CRUD methods as a human-readable format. The default value of this option isfalse
.Warning
If you set the value of
human_readable_serialization
totrue
, your insert operations might run more slowly.Adds the
run_cursor_command()
method to run a database command and retrieve the response as aCursor
type. To learn more, see the Run a Command guide.Adds SDAM event logging when you use the
tracing-unstable
feature flag.Adds the following configurations for
Client
and connection management:max_connecting
: an option that you can set in aClientOptions
struct to specify how many connections you can establish in parallel. To learn more about this option, see Connection Pool in the Performance Considerations guide.Client::warm_connection_pool()
: a method that you can use to create new connections in the connection pool to provide more predictable performance. When you use this method, the driver attempts to create connections up to the number specified in themin_pool_size
setting.Client::shutdown()
: a method that you can use to stop background tasks and wait for handlers to drop. This method can be helpful if you use event handlers to reference external resources, as these handlers might be used in tasks even after theClient
is closed.
To learn more about this release, see the v2.7.0 Release Highlights on GitHub.
What's New in 2.6
The Rust driver v2.6 release includes the following features, improvements, and fixes:
Supports AWS Identity and Access Management (IAM) roles for service accounts, such as Elastic Kubernetes Service (EKS) accounts.
Supports GCP-attached service accounts when using the Cloud Key Management System (KMS).
Supports fetching on-demand CSFLE credentials from the Azure KMS.
Implements the
FromStr
trait for theNamespace
struct. This change allows you to parse a string that includes a database and collection name, such as"testdb.testcollection"
into aNamespace
instance.Includes the
server_id
in aConnectionInfo
struct as ani64
type.Removes most type constraints on values referenced by a
Cursor
.Updates the
libmongocrypt
version in the driver dependencies in order to use the Queryable Encryption feature with equality queries.
To learn more about this release, see the v2.6.0 Release Highlights on GitHub.