Release Notes
On this page
Learn what's new in:
What's New in 6.14
The Node.js driver v6.14 release includes the following features:
- Adds support for the - $lookupaggregation stage on encrypted collections. You must upgrade your- mongodb-client-encryptionpackage to v6.3.0 or later to use this feature.
- Uses the driver's implementation of the - isUint8Array()method to prevent importing the- util/typespackage.
- Reverts the version compatibility of - @aws-sdk/credential-providersto v3.188.0.
To learn more about this release, see the v6.14.0 Release Notes on GitHub.
What's New in 6.13
The Node.js driver v6.13 release includes the following features:
- Adds a new standardized logger to enable insight into database operations without code changes. You can enable and configure the logger through environment variables, as shown in the following example: - env MONGODB_LOG_ALL=debug node server.mjs - To learn more about logging, see the Logging guide. 
- Improves command monitoring performance by removing deep copies of command and reply objects. Modifying the command and response values might lead to undefined behavior. 
- Adds an experimental abort signal feature. You can pass the - signalcommand to the following methods to interrupt the execution of the method when the signal is triggered:- collection.find()
- collection.findOne()
- collection.aggregate()
- collection.countDocuments()
- db.listCollections()
- db.command()
 - Aborting a signal closes a connection, which might cause unnecessary connection reestablishment. 
- To avoid potential DNS timeout errors, the driver catches and retries DNS lookups when resolving - mongodb+srv://connection strings.
- MongoClient.close()also closes any associated cursors.
- You can safely invoke - MongoClient.close()concurrently, but we do not recommend doing so if avoidable.
- Fixes an issue that caused - MONGODB-OIDCauthentication to not properly reauthenticate if the handshake includes speculative authentication.
To learn more about this release, see the v6.13.0 Release Notes on GitHub.
What's New in 6.12
The Node.js driver v6.12 release includes the following features:
- Adds support for v2.0 of the - zstdcompression algorithm. For more information about- zstdv2.0, see the- zstdRelease Notes on GitHub.
- Upgrades the - bsonpackage to v6.10.1. For more information about this release, see the v6.10.1 Release Notes for the- bsonpackage on GitHub.
- The driver populates the - ServerDescription.errorfield with a more specific error type and message when marking a primary replica-set member stale.
- The driver reads socket data with a stream in object mode instead of buffer mode. This prevents message parsing errors in rare cases caused by inaccurate data chunking. 
- If the driver encounters an error while connecting to a socks5 proxy, it no longer wraps the socks5 error in a - MongoNetworkError. This prevents the driver from wrapping a- MongoNetworkErrorin another- MongoNetworkError.
To learn more about this release, see the v6.12.0 Release Notes on GitHub.
What's New in 6.11
The Node.js driver v6.11 release includes the following features:
- Adds support for Node.js v22. 
- Adds the Client-Side Operations Timeout (CSOT) feature. You can use CSOT to apply a single timeout to all steps needed to complete a server-side operation, including server selection, connection checkout, serialization, and server-side execution. To learn more, see the Limit Server Execution Time guide. - Note- Experimental Feature- The CSOT feature is experimental and might change in future driver releases. 
- Adds OIDC authentication support for Kubernetes environments. To learn more about this feature, see the OIDC Authentication Mechanism guide. - To use OIDC to authenticate from a Kubernetes environment, set the - authMechanismPropertiesconnection option to- ENVIRONMENT:k8sin your connection string. You can use this feature when connecting to an environment running in Amazon's Elastic Kubernetes Service, Google Kubernetes Engine, or Azure Kubernetes Service.
- The - bsonpackage adds support for binary vector data. To learn more about this feature, see the v6.10.0 Release Notes for the- bsonpackage on GitHub.
- The driver emits - ConnectionClosedEventsafter- PoolClearedEvents.
To learn more about this release, see the v6.11.0 Release Notes on GitHub.
What's New in 6.10
The Node.js driver v6.10 release is the first official release to support all MongoDB Server 8.0 features, and includes the following improvements and fixes:
- Removes support for MongoDB Server 3.6. 
- Adds support for the MongoDB Server 8.0 bulk write API, which supports bulk write operations across multiple databases and collections in a single call. 
- Allows SRV hostnames with fewer than three parts separated by - .characters. For example, the driver now supports hostnames such as- mongodb+srv://mongodb.local.
- Supports the explain option to retrieve an accurate - maxTimeMSvalue for CRUD commands to describe the operation time. The explain options for find and aggregate operations are deprecated.
To learn more about this release, see the v6.10.0 Release Notes on GitHub.
What's New in 6.9
- Support for MongoDB Server 3.6 is deprecated and will be removed in a future driver release. 
- The driver natively supports explicit resource management for cursors and the - MongoClient,- ClientSession, and- ChangeStreamobjects. When using a compatible Node.js version, you can implement explicit resource management by using the- cursor.stream()method and- GridFSDownloadStreamclass.- To learn how to use explicit resource management, see the v6.9.0 Release Notes on GitHub. For more information about explicit resource management, see the ECMAScript Explicit Resource Management Proposal on GitHub. 
- If you're using Node.js 18.13 or later, you can pass the - autoSelectFamilyand- autoSelectFamilyTimeoutoptions to the- MongoClientconstructor. When the- autoSelectFamilyoption is- true, the driver automatically selects between an IPv4 or IPv6 connection. The- autoSelectFamilyTimeoutoption specifies the timeout, in milliseconds, for the driver to select the connection family.- The following code example shows how to use these options: - const client = new MongoClient(uri, - { autoSelectFamily: true, autoSelectFamilyTimeout: 100 }); 
- The - MongoClientconstructor accepts the- allowPartialTrustChainoption. This option controls the- X509_V_FLAG_PARTIAL_CHAINOpenSSL flag.
- The - ConnectionCheckedOutEventand- ConnectionCheckFailedEventnow include a- durationMSproperty. This property indicates the time elapsed between the start and end of a connection checkout operation.
- If you're using Node.js 18 or later, the driver ignores the - cryptoCallbacksoption and uses callbacks defined in C++ instead, significantly improving encryption performance. This change is available in the v6.1.0 version of the- mongodb-client-encryptionpackage.
- To enhance security, the options specifying the spawn path and arguments for - mongocryptdmust be own properties of- autoEncryption.extraOptions. This change helps prevent global prototype pollution bugs related to these options. For more information about own properties, see Object.hasOwn() on MDN.
- Adds official support for Queryable Encryption (QE) range queries. To use this feature, your app must use - mongodb-client-encryptionv6.1.0 or later and must connect to MongoDB Server 8.0 or later. For more information about QE range queries, see Queryable Encryption in the MongoDB Server manual.
- The - insertMany()and- bulkWrite()methods accept- ReadonlyArrayinputs.
- The driver retries writes based on the top-level code, found in - error.code, rather than the nested code in- error.result.writeConcernError.code. This fixes an issue in sharded clusters running versions MongoDB Server earlier than 4.4.
- The - LocalKMSProviderConfiguration.keyproperty accepts a- BSON- Binaryinstance for- AutoEncryptionOptions.
- In TypeScript, the - BulkOperationBaseclass reports the- lengthgetter property.
- The - MongoWriteConcernErrortype now preserves the original top-level code in- MongoWriteConcernError.code.
- The - cursor.toArray()method empties the current batch of documents into the array before calling the async iterator again. This change avoids the delays associated with- async/- awaitexecution and improves performance by up to 5% on average. This optimization doesn't apply if you provide a transform to the- cursor.map()method before calling the- toArray()method.
- Fixes mixed use of the - cursor.next()method with- for awaitsyntax.
- Adds the - enableUtf8Validationoption when deserializing BSON, which was inadvertently removed in Node.js driver v6.8.
- Adds the - durationMSproperty to the- ConnectionReadyEventclass. This property represents the time between the connection creation event and when the- ConnectionReadyEventfires.
To learn more about this release, see the v6.9.0 Release Notes on GitHub.
What's New in 6.8
The Node.js driver v6.8 release includes the following features:
- Fixes a bug where a local KMS provider accepted a - BSON Binaryinstance at runtime, but the TypeScript compiler allowed only values of type- Bufferand- string.
- The - ReadConcernMajorityNotAvailableYeterror is now a retryable read error.
- You can now associate a name with, and provide multiple keys for, KMS providers. This feature requires - mongodb-client-encryptionv6.0.1 or later. You can't use named KMS providers if your application uses the automatic KMS provider refresh capability.- The following code example shows how to configure a - ClientEncryptionobject with multiple AWS keys:- const clientEncryption = new ClientEncryption(keyVaultClient, { - 'aws:key1': { - accessKeyId: ..., - secretAccessKey: ... - }, - 'aws:key2': { - accessKeyId: ..., - secretAccessKey: ... - }, - clientEncryption.createDataKey('aws:key-1', { ... }); 
- When you create a KMIP data key, you can now specify the - delegatedoption. If this option is set to- true, the KMIP provider performs encryption and decryption of the data key locally, ensuring that the encryption key never leaves the KMIP server. This feature requires- mongodb-client-encryptionv6.0.1 or later.- The following code example shows how to specify this option: - clientEncryption.createDataKey('kmip', { masterKey: { delegated: true } } ); 
- The driver now decodes BSON responses as the cursor iterates over them, rather than decoding the entire BSON response when it is received. 
- The Github release for the - mongodbpackage now contains a detached signature file,- mongodb-X.Y.Z.tgz.sig, for the NPM package. This change applies to every major and patch release for versions 5.x and 6.x of the driver. To verify the package signature, follow the instructions in the Release Integrity section of the README.md file in the driver's GitHub repository.
To learn more about this release, see the v6.8.0 Release Notes on GitHub.
What's New in 6.7
The Node.js driver v6.7 release includes the following features:
- Adds support for the - MONGODB-OIDCauthentication mechanism when connected to MongoDB Server v7.0 and later. The driver supports authentication with Azure machine authentication, GCP machine authentication, callback authentication, and human interaction callback authentication facets.
- Fixes an issue where setting the - useBigInt64flag to- truecaused the internal- compareTopologyVersionfunction to generate an error.
To learn more about this release, see the v6.7.0 Release Notes on GitHub.
What's New in 6.6
The Node.js driver v6.6 release includes the following features:
- Upgrades to using BSON 6.7.0. For details about the new BSON features, see the release notes for BSON 6.5.0, BSON 6.6.0, and BSON 6.7.0. 
- Adds the - addStage()method to the fluid aggregation API. You can use this method to add aggregation pipeline stages individually, as shown in the following example:- const documents = await users.aggregate().addStage({ $project: { name: true } }).toArray(); 
- Adds the - causeand- dependencyNamefields to the- MongoMissingDependencyErrorclass. You can use these fields to programmatically determine if a package is missing or why a package didn't load.
- Adds the - minRoundTripTimeproperty to the- ServerDescriptionclass. This property contains the minimum round-trip time over the last 10 heartbeats.
- Adds the - toJSON()method to the- TopologyDescriptionclass. Although you can use this method to stringify- TopologyDescriptionobjects to JSON, we recommend using Node's- util.inspect()method instead, because it properly handles all types used in JavaScript and the driver.
- Adds cursor options support for the - Collection.indexExists(),- Collection.indexes(), and- Collection.indexInformation()methods in Typescript.
- Removes support for the - readConcernand- writeConcernoptions from the- Collection.listSearchIndexes()method.- listSearchIndexes()is an Atlas-specific method, and Atlas search indexes don't support these options.
- Redefines the - ServerDescription.roundTripTimeproperty as a moving average. Previously, it was a weighted average of the most recently observed heartbeat duration and the previous duration.
- You can specify the type of a search index when creating the index, as shown in the following example: - const indexName = await collection.createSearchIndex({ - name: 'my-vector-search-index', - type: 'vectorSearch', - definition: { - mappings: { dynamic: false } - } - }); 
- The - UpdateFilter.$currentDateproperty no longer throws an error when you pass it to a compound method, such as- findOneAndUpdate(), on a collection with a limited schema.
- The driver throws a - MongoTransactionErroronly if you provide a- ReadPreferenceModeother than- primaryand then try to perform a command that involves a read operation.
- The data type of the - TopologyDescription.errorproperty is- MongoError.
- The - Collection.indexExists()method no longer supports the- fulloption.
- The - Collection.indexInformation(),- Collection.indexes(), and- Db.indexInformation()methods have a return type of- IndexDescriptionCompact | IndexDescriptionInfo[]in TypeScript.
- When retrieving AWS KMS (Key Management System) credentials, the driver no longer throws an error when it receives an access key that includes an expiration timestamp. 
- The - ClusterTimeinterface no longer defines the- signaturefield as required in TypeScript.
To learn more about this release, see the v6.6.0 Release Highlights on GitHub.
What's New in 6.5
The Node.js driver v6.5 release includes the following features:
- Updates bulk write operations to use the - pkFactoryclass for document ID generation.
Warning
If you previously specified an instance of a pkFactory to handle
bulk writes, the _id fields of the documents inserted by using bulk
writes may be inconsistent with the behavior in this version.
- Fixes the read preference that is sent with read operations to - primaryPreferredwhen the driver is connected to a secondary node in the replica set.
- Fixes a memory leak in promise creation for socket operations. 
- Reduces first-time connection latency when connecting to a DNS seedlist by querying the - SRVand- TXTrecords in parallel.
- Adds tracking to container metadata when running a client in Kubernetes or a container environment in the - client.env.containerfield of the handshake document.
- Adds the original error document returned by the server to the - errorResponsefield of the- MongoServerErrordocument.
- Deprecates the - CloseOptionsinterface which is unused by the driver.
To learn more about this release, see the v6.5.0 Release Highlights on GitHub.
What's New in 6.4
The Node.js driver v6.4 release includes the following features:
- When multiple - mongosinstances are available, different servers are used for read and write retry attempts.
- Caches AWS credentials at the client level, rather than for each authentication. 
- Upgrades to using BSON 6.4.0. For details about the new BSON features, see the release notes for BSON 6.3.0 and BSON 6.4.0. 
- Read operations that result in an - ExceededTimeLimiterror are retried.
- Fixes a request issue related to TLS sockets and KMS Providers. 
- Fixes the base64 padding on the - saslContinuecommand to allow for mongosh authentication.
- Types - countDocumentsusing- Filter<Schema>rather than- Document, which enables autocompletion and helps prevent downstream typing issues.
- Fixes a type error in the - $addToSetoption of the- bulkWritecommand. The driver skips- $addToSetvalidation you extend your types from- Documentor- any, or use properties of any type.
- Fixes the - ServerHeartbeatSucceededand- ServerHeartbeatFailedevent heartbeat duration so that it does not include the time to create the socket.
- Appropriately emits errors from cursor transform streams, rather than absorbing them. 
- Makes AWS session tokens optional when a username and password are provided, and allows AWS SDK to handle the authentication requests. 
To learn more about this release, see the v6.4.0 Release Highlights on GitHub.
What's New in 6.3
The Node.js driver v6.3 release includes the following features:
- Adds the - serverMonitoringModeclient option to control the behavior of the monitoring connection among the nodes in a topology. This option takes a value of- auto(default),- poll, or- stream. To learn more, see the entry for this option in the Specify Connection Options guide.- You can set the - serverMonitoringModeoption in a- MongoClientOptionsinstance or as a connection string option. The following example shows how to create a client with the option set to- stream:- new MongoClient('<connection string>', { serverMonitoringMode: 'stream' }); 
- Fixes a connection leak when the - serverApiclient option is set.
- Deprecates the - contentTypeand- aliasesGridFS options. To store the content type and aliases of a file, add- contentTypeand- aliasesfields to the- metadatadocument.
To learn more about this release, see the v6.3.0 Release Highlights.
What's New in 6.2
The Node.js driver v6.2 release includes the following features:
- Updates the - bsonpackage version to 6.2.0 to include color visualization of types, as shown in the following image:![A screenshot of the terminal that shows printing in color]() - To learn more, see the bson v6.2.0 release notes. 
- Ensures that the - result.insertedIdsproperty of a bulk write error type contains the- _idvalues of successfully inserted documents. In previous versions, when a bulk write operation rejected an insert operation, the- result.insertedIdsproperty contained the- _idvalues for all attempted inserts.
- Closes the implicit session created when running the - findOne()method on a time series collection regardless of the outcome of the operation.
- Allows the creation of collections that have names that start or end with the - .character. This change aligns the driver's database and collection name-checking behavior with the server's.
To learn more about this release, see the v6.2.0 Release Highlights.
What's New in 6.1
The Node.js driver v6.1 release includes the following features:
- Updates the - bsonpackage version to 6.1.0 to expose the- Decimal128.fromStringWithRounding()method. To learn more, see the v6.1.0 bson release notes.
- Detects environment variables for region settings when you authenticate by using the IAM AssumeRoleWithWebIdentity action with - MONGODB-AWSauthentication. To instruct the driver to use your region options, you must set both of the following environment variables:- AWS_STS_REGIONAL_ENDPOINTS
- AWS_REGION
 - To learn how to set region settings when using the - MONGODB-AWSauthentication mechanism, see the Web Identity Token tab in the AWS IAM Authentication Mechanism guide.
- Fixes a memory leak issue caused by recursive calls to the - next()method of the- ChangeStreamtype.
To learn more about this release, see the v6.1.0 Release Highlights.
What's New in 6.0
Warning
Breaking Changes in v6.0
This driver version introduces breaking changes. For a list of these changes, see the Version 6.0 Breaking Changes section in the Upgrade guide.
The Node.js driver v6.0 release includes the following features:
Important
Deprecation Notice
All of the ssl-prefixed options in the MongoClientOptions
type are deprecated. In addition, the tlsCertificateFile option
is deprecated.
Instead, you should store your certificates in a SecureContext
object or set the tls-prefixed options in your
MongoClientOptions instance. To learn more, see Enable TLS on a Connection.
- Removal of support for the - addUser()helper command. Use the createUser MongoDB Shell command instead.
- Removal of support for the - collStatsoperation. Use the $collStats aggregation operator instead.
- The - optionsfield of the- ConnectionPoolCreatedEventtype contains only the following fields, which are the non-default pool options:- maxConnecting
- maxPoolSize
- minPoolSize
- maxIdleTimeMS
- waitQueueTimeoutMS
 
- The driver asynchronously reads files set in the - tlsCAFileand- tlsCertificateKeyFileconnection options when you call the- MongoClient.connect()method, not when you create a- MongoClientinstance.
- Removal of the - keepAliveand- keepAliveInitialDelayconnection options. The value of- keepAliveis permanently set to- trueand the value of- keepAliveInitialDelayis set to 300000 milliseconds (300 seconds).- To learn how to set keepalive settings at a system level, see the Does TCP keepalive time affect MongoDB Deployments? FAQ entry in the Server manual. 
- Removes the following options for the - Db.command()method:- willRetryWrite
- omitReadPreference
- writeConcern
- explain
- readConcern
- collation
- maxTimeMS
- comment
- retryWrites
- dbName
- authdb
- noResponse
 - Although you cannot pass these options to the - Db.command()method, you can still set them in the command document. To learn more, see the Command Options section of the Run a Database Command guide.
To learn more about this release, see the v6.0.0 Release Highlights.
