Docs Menu
Docs Home
/ / /
Node.js Driver

What's New

On this page

  • What's New in 6.10
  • What's New in 6.9
  • What's New in 6.8
  • What's New in 6.7
  • What's New in 6.6
  • What's New in 6.5
  • What's New in 6.4
  • What's New in 6.3
  • What's New in 6.2
  • What's New in 6.1
  • What's New in 6.0

Learn what's new in:

  • Version 6.10

  • Version 6.9

  • Version 6.8

  • Version 6.7

  • Version 6.6

  • Version 6.5

  • Version 6.4

  • Version 6.3

  • Version 6.2

  • Version 6.1

  • Version 6.0

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 maxTimeMS value 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.

  • 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 ChangeStream objects. When using a compatible Node.js version, you can implement explicit resource management by using the cursor.stream() method and GridFSDownloadStream class.

    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 autoSelectFamily and autoSelectFamilyTimeout options to the MongoClient constructor. When the autoSelectFamily option is true, the driver automatically selects between an IPv4 or IPv6 connection. The autoSelectFamilyTimeout option 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 MongoClient constructor accepts the allowPartialTrustChain option. This option controls the X509_V_FLAG_PARTIAL_CHAIN OpenSSL flag.

  • The ConnectionCheckedOutEvent and ConnectionCheckFailedEvent now include a durationMS property. 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 cryptoCallbacks option 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-encryption package.

  • To enhance security, the options specifying the spawn path and arguments for mongocryptd must 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-encryption v6.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 ReadonlyArray inputs.

  • 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.key property accepts a BSON Binary instance for AutoEncryptionOptions.

  • In TypeScript, the BulkOperationBase class reports the length getter property.

  • The MongoWriteConcernError type 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/await execution 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 await syntax.

  • Adds the enableUtf8Validation option when deserializing BSON, which was inadvertently removed in Node.js driver v6.8.

  • Adds the durationMS property to the ConnectionReadyEvent class. This property represents the time between the connection creation event and when the ConnectionReadyEvent fires.

To learn more about this release, see the v6.9.0 Release Notes on GitHub.

The Node.js driver v6.8 release includes the following features:

  • Fixes a bug where a local KMS provider accepted a BSON Binary instance at runtime, but the TypeScript compiler allowed only values of type Buffer and string.

  • The ReadConcernMajorityNotAvailableYet error 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-encryption v6.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 ClientEncryption object 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 delegated option. 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-encryption v6.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 mongodb package 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.

The Node.js driver v6.7 release includes the following features:

  • Adds support for the MONGODB-OIDC authentication 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 useBigInt64 flag to true caused the internal compareTopologyVersion function to generate an error.

To learn more about this release, see the v6.7.0 Release Notes on GitHub.

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 cause and dependencyName fields to the MongoMissingDependencyError class. You can use these fields to programmatically determine if a package is missing or why a package didn't load.

  • Adds the minRoundTripTime property to the ServerDescription class. This property contains the minimum round-trip time over the last 10 heartbeats.

  • Adds the toJSON() method to the TopologyDescription class. Although you can use this method to stringify TopologyDescription objects 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 readConcern and writeConcern options from the Collection.listSearchIndexes() method. listSearchIndexes() is an Atlas-specific method, and Atlas search indexes don't support these options.

  • Redefines the ServerDescription.roundTripTime property 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.$currentDate property 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 MongoTransactionError only if you provide a ReadPreferenceMode other than primary and then try to perform a command that involves a read operation.

  • The data type of the TopologyDescription.error property is MongoError.

  • The Collection.indexExists() method no longer supports the full option.

  • 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 ClusterTime interface no longer defines the signature field as required in TypeScript.

To learn more about this release, see the v6.6.0 Release Highlights on GitHub.

The Node.js driver v6.5 release includes the following features:

  • Updates bulk write operations to use the pkFactory class 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 primaryPreferred when 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 SRV and TXT records in parallel.

  • Adds tracking to container metadata when running a client in Kubernetes or a container environment in the client.env.container field of the handshake document.

  • Adds the original error document returned by the server to the errorResponse field of the MongoServerError document.

  • Deprecates the CloseOptions interface which is unused by the driver.

To learn more about this release, see the v6.5.0 Release Highlights on GitHub.

The Node.js driver v6.4 release includes the following features:

  • When multiple mongos instances 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 ExceededTimeLimit error are retried.

  • Fixes a request issue related to TLS sockets and KMS Providers.

  • Fixes the base64 padding on the saslContinue command to allow for mongosh authentication.

  • Types countDocuments using Filter<Schema> rather than Document, which enables autocompletion and helps prevent downstream typing issues.

  • Fixes a type error in the $addToSet option of the bulkWrite command. The driver skips $addToSet validation you extend your types from Document or any, or use properties of any type.

  • Fixes the ServerHeartbeatSucceeded and ServerHeartbeatFailed event 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.

The Node.js driver v6.3 release includes the following features:

  • Adds the serverMonitoringMode client 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 Connection Options guide.

    You can set the serverMonitoringMode option in a MongoClientOptions instance 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 serverApi client option is set.

  • Deprecates the contentType and aliases GridFS options. To store the content type and aliases of a file, add contentType and aliases fields to the metadata document.

To learn more about this release, see the v6.3.0 Release Highlights.

The Node.js driver v6.2 release includes the following features:

  • Updates the bson package 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.insertedIds property of a bulk write error type contains the _id values of successfully inserted documents. In previous versions, when a bulk write operation rejected an insert operation, the result.insertedIds property contained the _id values 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.

The Node.js driver v6.1 release includes the following features:

  • Updates the bson package 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 authenticating by using the MONGODB-AWS authentication mechanism. To instruct the driver to use your region options, you must set both of the following environment variables:

    • AWS_STS_REGIONAL_ENDPOINTS

    • AWS_REGION

  • Fixes a memory leak issue caused by recursive calls to the next() method of the ChangeStream type.

To learn more about this release, see the v6.1.0 Release Highlights.

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 collStats operation. Use the $collStats aggregation operator instead.

  • The options field of the ConnectionPoolCreatedEvent type 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 tlsCAFile and tlsCertificateKeyFile connection options when you call the MongoClient.connect() method, not when you create a MongoClient instance.

  • Removal of the keepAlive and keepAliveInitialDelay connection options. The value of keepAlive is permanently set to true and the value of keepAliveInitialDelay is 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 Command guide.

To learn more about this release, see the v6.0.0 Release Highlights.

Back

Quick Reference