What's New
On this page
Learn what's new in:
What's New in 6.12
The Node.js driver v6.12 release includes the following features:
Adds support for v2.0 of the
zstd
compression algorithm. For more information aboutzstd
v2.0, see thezstd
Release Notes on GitHub.Upgrades the
bson
package to v6.10.1. For more information about this release, see the v6.10.1 Release Notes for thebson
package on GitHub.The driver populates the
ServerDescription.error
field 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 aMongoNetworkError
in anotherMongoNetworkError
.
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. CSOT lets you apply a single timeout to all steps needed to complete a server-side operation, including server selection, connection checkout, serialization, and server-side execution.
Note
Experimental Feature
The CSOT feature is experimental and might change in future driver releases.
Adds OIDC authentication support for Kubernetes environments. To use OIDC to authenticate from a Kubernetes environment, set the
authMechanismProperties
connection option toENVIRONMENT:k8s
in 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 following example shows how to specify this connection option:
const client = new MongoClient('mongodb://host:port/?authMechanism=MONGODB-OIDC&authMechanismProperties=ENVIRONMENT:k8s'); The
bson
package adds support for binary vector data. To learn more about this feature, see the v6.10.0 Release Notes for thebson
package on GitHub.The driver emits
ConnectionClosedEvents
afterPoolClearedEvents
.
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 asmongodb+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.
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
, andChangeStream
objects. When using a compatible Node.js version, you can implement explicit resource management by using thecursor.stream()
method andGridFSDownloadStream
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
andautoSelectFamilyTimeout
options to theMongoClient
constructor. When theautoSelectFamily
option istrue
, the driver automatically selects between an IPv4 or IPv6 connection. TheautoSelectFamilyTimeout
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 theallowPartialTrustChain
option. This option controls theX509_V_FLAG_PARTIAL_CHAIN
OpenSSL flag.The
ConnectionCheckedOutEvent
andConnectionCheckFailedEvent
now include adurationMS
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 themongodb-client-encryption
package.To enhance security, the options specifying the spawn path and arguments for
mongocryptd
must be own properties ofautoEncryption.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()
andbulkWrite()
methods acceptReadonlyArray
inputs.The driver retries writes based on the top-level code, found in
error.code
, rather than the nested code inerror.result.writeConcernError.code
. This fixes an issue in sharded clusters running versions MongoDB Server earlier than 4.4.The
LocalKMSProviderConfiguration.key
property accepts aBSON
Binary
instance forAutoEncryptionOptions
.In TypeScript, the
BulkOperationBase
class reports thelength
getter property.The
MongoWriteConcernError
type now preserves the original top-level code inMongoWriteConcernError.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 withasync
/await
execution and improves performance by up to 5% on average. This optimization doesn't apply if you provide a transform to thecursor.map()
method before calling thetoArray()
method.Fixes mixed use of the
cursor.next()
method withfor await
syntax.Adds the
enableUtf8Validation
option when deserializing BSON, which was inadvertently removed in Node.js driver v6.8.Adds the
durationMS
property to theConnectionReadyEvent
class. This property represents the time between the connection creation event and when theConnectionReadyEvent
fires.
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 Binary
instance at runtime, but the TypeScript compiler allowed only values of typeBuffer
andstring
.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 totrue
, the KMIP provider performs encryption and decryption of the data key locally, ensuring that the encryption key never leaves the KMIP server. This feature requiresmongodb-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.
What's New in 6.7
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 totrue
caused the internalcompareTopologyVersion
function 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
cause
anddependencyName
fields to theMongoMissingDependencyError
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 theServerDescription
class. This property contains the minimum round-trip time over the last 10 heartbeats.Adds the
toJSON()
method to theTopologyDescription
class. Although you can use this method to stringifyTopologyDescription
objects to JSON, we recommend using Node'sutil.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()
, andCollection.indexInformation()
methods in Typescript.Removes support for the
readConcern
andwriteConcern
options from theCollection.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 asfindOneAndUpdate()
, on a collection with a limited schema.The driver throws a
MongoTransactionError
only if you provide aReadPreferenceMode
other thanprimary
and then try to perform a command that involves a read operation.The data type of the
TopologyDescription.error
property isMongoError
.The
Collection.indexExists()
method no longer supports thefull
option.The
Collection.indexInformation()
,Collection.indexes()
, andDb.indexInformation()
methods have a return type ofIndexDescriptionCompact | 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 thesignature
field 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
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
andTXT
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 theMongoServerError
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.
What's New in 6.4
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
usingFilter<Schema>
rather thanDocument
, which enables autocompletion and helps prevent downstream typing issues.Fixes a type error in the
$addToSet
option of thebulkWrite
command. The driver skips$addToSet
validation you extend your types fromDocument
orany
, or use properties of any type.Fixes the
ServerHeartbeatSucceeded
andServerHeartbeatFailed
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.
What's New in 6.3
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 ofauto
(default),poll
, orstream
. To learn more, see the entry for this option in the Connection Options guide.You can set the
serverMonitoringMode
option in aMongoClientOptions
instance or as a connection string option. The following example shows how to create a client with the option set tostream
:new MongoClient('<connection string>', { serverMonitoringMode: 'stream' }); Fixes a connection leak when the
serverApi
client option is set.Deprecates the
contentType
andaliases
GridFS options. To store the content type and aliases of a file, addcontentType
andaliases
fields to themetadata
document.
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
bson
package version to 6.2.0 to include color visualization of types, as shown in the following image: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, theresult.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.
What's New in 6.1
The Node.js driver v6.1 release includes the following features:
Updates the
bson
package version to 6.1.0 to expose theDecimal128.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 theChangeStream
type.
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
collStats
operation. Use the $collStats aggregation operator instead.The
options
field of theConnectionPoolCreatedEvent
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
andtlsCertificateKeyFile
connection options when you call theMongoClient.connect()
method, not when you create aMongoClient
instance.Removal of the
keepAlive
andkeepAliveInitialDelay
connection options. The value ofkeepAlive
is permanently set totrue
and the value ofkeepAliveInitialDelay
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.