What's New
On this page
Learn what's new in:
What's New in 3.1
The 3.1 driver release includes the following new features:
Adds new default serializers for immutable collections in the System.Collections.Immutable namespace. The driver can now serialize
ImmutableArray
objects, and serialization for other immutable collections is more memory efficient.Adds support for the token field type and array field expressions with Atlas Search builders for the
equals
operator. To learn more about using Atlas Search with the .NET/C# Driver, see Atlas Search.Adds support for sequential pagination in Atlas Search.
Adds support for valid SRV hostnames with fewer than 3 parts.
Adds support for the
Exists
,IsMissing
, andIsNullOrMissing
methods in MongoDB Query API filters.Adds support for Exact Nearest Neighbor (ENN) vector search. To learn more about ENN Vector Search, see Run Vector Search Queries in the Atlas Search documentation.
Adds support for the
sort
option to be passed to update commands. To learn more about using update commands with the .NET/C# Driver, see csharp-change-guide.
For more information about this release, see the v3.1 release notes.
What's New in 3.0
Warning
Breaking Changes in v3.0
The v3.0 driver contains breaking changes. See Version 3.0 Breaking Changes for more information.
The 3.0 driver release includes the following new features:
Adds the
MongoClientSettings.TranslationOptions
connection option, which specifies options for translating LINQ queries to the Query API. See Connection Options for more information.Adds support for the
Half
type, which represents a half-precision floating-point number. This type is available in .NET 5 and later. To learn more about theHalf
type, see the Half Struct API reference page on MSDN.The
IMongoClient
interface inherits theIDisposable
interface. As a result, theMongoClient
class and other classes that implement theIMongoClient
interface contain aDispose()
method, which disposes of the client. This method does not dispose the underlying cluster and connections to the MongoDB server. To dispose of the cluster and connections, call theClusterRegistry.UnregisterAndDisposeCluster()
method. The implementation of theIDisposable
interface is experimental.To learn more about the
IDisposable
interface and use of theDispose()
method, see Dispose Pattern on MSDN.Adds support for the
DateOnly
type, which represents a date value with no time component. This type is available in .NET 6 and later. To learn more about theDateOnly
type, see the DateOnly Struct. API reference page on MSDN.Adds support for the
TimeOnly
type, which represents a time value with no date component. This type is available in .NET 6 and later. To learn more about theTimeOnly
type, see the TimeOnly Struct. API reference page on MSDN.Adds support for implicit client-side projection when using the
Find()
method, theSelect()
method, or theProject()
aggregation stage with the LINQ3 provider. In previous versions of the driver, you could perform client-side projection with the LINQ3 provider only after calling theToEnumerable()
orAsEnumerable()
method.To learn how to enable and use client-side projection for a driver method, select the corresponding tab:
// Enable client-side projection var findOptions = new FindOptions(); findOptions.TranslationOptions = new ExpressionTranslationOptions { EnableClientSideProjections = true }; var find = collection .Find(doc => doc.Id == 1, findOptions); .Project(doc => new { R = MyFunction(doc.Name) }); // Enable client-side projection var aggregateOptions = new AggregateOptions(); aggregateOptions.TranslationOptions = new ExpressionTranslationOptions { EnableClientSideProjections = true }; var queryable = collection .AsQueryable(aggregateOptions) .Where(doc => doc.Id == 1) .Select(doc => new { R = MyFunction(doc.Name) }); // Enable client-side projection var aggregateOptions = new AggregateOptions(); aggregateOptions.TranslationOptions = new ExpressionTranslationOptions { EnableClientSideProjections = true }; var aggregate = collection .Aggregate(aggregateOptions) .Project(doc => new { R = MyFunction(doc.Name) }); Tip
MongoClientSettings
To enable client-side projection for all queries on a client, set the
TranslationOptions
property of yourMongoClientSettings
object, as shown in the following example:clientSettings.TranslationOptions = new ExpressionTranslationOptions { EnableClientSideProjections = true }; To learn more about using the aggregation pipeline with the .NET/C# Driver, see Aggregation.
Adds a
MongoClient
API for bulk write operations. To learn more about bulk write operations, see Bulk Write Operations.
For more information about this release, see the v3.0 release notes.
What's New in 2.30
The 2.30 driver doesn't introduce new features or bug fixes. Its purpose is to ease migration to v3.x of the .NET/C# Driver by marking the public APIs that were removed in v3.0 as obsolete.
What's New in 2.29
The 2.29 driver release adds support for MongoDB Server version 8.0 and includes the following new features:
Adds support for v2 of the Queryable Encryption range protocol.
Adds support for range indexes for Queryable Encryption. For more information about Queryable Encryption, see Queryable Encryption in the MongoDB Server manual.
For more information about this release, see the v2.29 release notes.
What's New in 2.28
Warning
Potential Breaking Change in v2.28
All .NET/C# Driver components are strongly named. If your application has dependencies that reference multiple .NET/C# Driver versions, you must create binding redirects to manage those dependencies. For more information, see Version 2.28.0 Breaking Change.
The 2.28 driver release includes the following new features:
Adds support for additional numeric conversions involving
Nullable<T>
.Adds support for the
delegated
option when using KMIP for CSFLE or Queryable Encryption.
For more information about this release, see the v2.28 release notes.
What's New in 2.27
The 2.27 driver release includes the following new features:
Adds support for the
$sample
aggregation operator.Implements the
Equals()
method for serializers in LINQ3.Ensures that read and write concerns are not applied to Atlas Search Index Helper commands to avoid errors.
Disallows the use of the comma character in
authMechanismProperties
connection string values when using theMONGODB-OIDC
authentication mechanism.Fixes a translation bug that caused an error during serialization involving numbers of different sizes.
Adds support for Linux distributions that use the
libdl.so.2
library.
For more information about this release, see the v2.27 release notes.
What's New in 2.26
The 2.26 driver release includes the following new features:
Added support for using the
SelectMany()
aggregation method withinSelect()
andProject()
aggregation stages.Added support for
Dictionary.ContainsValue()
calls in LINQ queries.Added support for string concatenation of mixed types.
Enabled use of native
crypto
inlibmongocrypt
bindings.Added support for serialization of
Memory
andReadOnlyMemory
structs.Added support for the GCP Identity Provider when using the
MONGODB-OIDC
authentication mechanism. To learn more, see GCP IMDS in the Enterprise Authentication Mechanisms guide.Implemented signing of NuGet packages.
Implemented read and write retries to other
mongos
instances when possible.
What's New in 2.25
The 2.25 driver release includes the following new features:
Added support for the
MONGODB-OIDC
authentication mechanism and automatic token acquisition for Azure Identity Provider.Added the class name to the error message reported when
BsonClassMapSerializer
cannot locate a matching creator.Added a
LoggedStages
field to surface the MQL executed after performing a LINQ query.Added support for overriding the
"mongodb"
service name with a custom one by using thesrvServiceName
connection option.Improved behavior of bulk write operations to prevent enumerating the requests parameter more than once.
What's New in 2.24
The 2.24 driver release includes the following new features:
Added the IMongoCollection.DistinctMany() method.
Added support for the latest optional arguments for the $dateFromString aggregation expression.
Added support for sorting by score in the $search aggregation stage.
Added the
VectorSearchScore
builder for the $vectorSearch aggregation stage.Added support for the $in operator in Atlas Search.
Added the
Mql.Exists()
,Mql.IsMissing()
, andMql.IsNullOrMissing()
methods for LINQ queries.Added support for the
IComparable.CompareTo()
method in LINQ queries.Added support for nested calls to the
AsQueryable()
method to support LINQ queries by the MongoDB Entity Framework Core Provider.Added support for TLS 1.3.
Updated the
libmongocrypt
package version to 1.8.2.Fixed a segfault in Kerberos (
libgssapi
) on newer Linux distributions.Fixed a GridFS bug in which downloading a file caused an error if a larger file with the same ID had also been uploaded.
The
ExceededTimeLimit
server error is now retryable for both read and write operations.When running within a function-as-a-service (FaaS) environment, such as AWS Lambda, the driver now uses the polling monitoring mechanism.
To improve MongoDB Atlas Serverless compatibility, the driver now uses OP_MSG for authentication if the server supports it.
What's New in 2.23
The 2.23 driver release includes the following new features:
Improvements and bug fixes to the LINQ3 integration.
Added support for aggregation bitwise operators.
Added support for the
$out
operator in MongoDB time series collections.Added ChangeStreamSplitLargeEvent to handle change stream events greater than 16 MB.
What's New in 2.22
The 2.22 driver release includes the following new features:
Improvements and bug fixes to the LINQ3 integration.
Added support for $set and $vectorSearch aggregation stages.
Added synonym support for Atlas Search.
Reduced memory allocation when using encryption.
Added logging messages for server discovery and monitoring (SDAM) events. For more information on these events, see the MongoDB SDAM Logging and Monitoring specification.