Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Release Notes for MongoDB 8.3

Important

MongoDB 8.3 is the latest minor release. Starting with MongoDB 8.2, minor releases are available for on-premises deployments (Community and EA) for specific use cases. For more information, see MongoDB Versioning.

To install the latest MongoDB version supported for on-premises use, see the installation instructions.

Important

MongoDB 8.3 includes fixes for CVE-2025-12893, CVE-2025-13507, and CVE-2025-14345.

For the latest information about MongoDB security updates, see MongoDB Security Bulletins.

  • SERVER-124974 Ensure memory lifetime during $match pushdown analysis

  • All JIRA issues closed in 8.3.1

  • 8.3.1 Changelog

MongoDB 8.3 improves access to array element indexes in $map, $filter, and $reduce aggregation expressions. You can use the new arrayIndexAs field to set a variable to store the index of an array element. You can also use the new $$IDX aggregation system variable to access the index of the current array element if you omit arrayIndexAs.

Starting in MongoDB 8.3, Full Time Diagnostic Data Capture (FTDC) collects connPoolStats metrics for mongod processes.

serverStatus includes the following new fields in its output:

MongoDB 8.3 removes the service field in the serverStatus output.

Starting in MongoDB 8.3, you can exclude all optional fields from the serverStatus output by specifying none: 1. After you exclude all optional fields, you can then specify the fields you want to include.

For details, see Exclude All Optional Fields.

You can also optionally specify lockContentionMetrics: 1 in the serverStatus command to include lockContentionMetrics in the output.

Starting in MongoDB 8.3, $toString can convert additional BSON types to strings, including objects, arrays, regular expressions, MaxKeys, MinKeys, and timestamps. For details, see $toString.

MongoDB 8.3 introduces the optional base argument for $convert to convert between string and numeric values using bases 2, 8, 10, and 16. For details, see $convert.

Starting in MongoDB 8.3, you can convert strings that represent arrays using $convert or the shorthand expression $toArray.

You can also convert between binData and arrays of numeric values. For details, see Convert binData to Array and Convert an Array of Numeric Values to binData.

Starting in MongoDB 8.3, you can convert strings that represent objects using $convert or the shorthand expression $toObject.

Starting in MongoDB 8.3, if a document contains both GeoJSON and legacy numeric coordinate fields, geospatial index generation prioritizes GeoJSON coordinates.

If your documents contain legacy numeric coordinate values that precede GeoJSON coordinates and existing indexes rely on that behavior, you might need to rebuild your geospatial indexes.

This change may require you to rebuild geospatial indexes if your documents contain legacy numeric coordinate values that precede GeoJSON coordinates and existing indexes rely on that behavior. Review geospatial queries to confirm they return expected results.

Starting in MongoDB 8.3, the removeShard command is deprecated. This release introduces four new commands to replace removeShard and provide granular control over the shard draining and removal process.

MongoDB provides four additional commands to transition from an embedded config server to a dedicated config server.

MongoDB 8.3 adds three new server parameters that limit the resource consumption of pre-auth connections:

MongoDB 8.3 adds the cachePressureQueryPeriodMilliseconds parameter which sets the time interval MongoDB waits between checks for storage engine cache pressure. If the storage engine is under cache pressure, MongoDB aborts the oldest transaction. For details, see cachePressureQueryPeriodMilliseconds.

MongoDB 8.3 increases the default value of diagnosticDataCollectionDirectorySizeMB from 200 to 500 MiB.

MongoDB 8.3 adds the overloadAwareServerSelectionEnabled parameter, which controls whether retries that target other servers in the cluster avoid members that recently returned an error labeled SystemOverloadedError. You can enable this parameter to opt in to overload-aware retargeting.

Starting in MongoDB 8.3, the ingressRequestRateLimiterApplicationExemptions parameter lets you specify applications to exempt from ingress request rate limiting. For details, see ingressRequestRateLimiterApplicationExemptions.

MongoDB 8.3 adds two parameters that let you control the impact that the Database Profiler has on query performance:

MongoDB 8.3 also adds two related serverStatus metrics:

MongoDB 8.3 adds parameters to configure how internal server-side clients (between mongos and mongod) back off when retrying operations that fail due to overload.

Starting in 8.3, upsert operations that produce a BSON object that is too large return the 10334 BSONObjectTooLarge error code. In earlier versions, upsert operations that produce a BSON object that is too large return the 17419 or 17420 error codes.

Starting in 8.3, MongoDB no longer automatically enables the checkBSONConformance field in the db.collection.validate() method when full is true. Additionally, the db.collection.validate() method now checks to ensure a collection doesn't have any documents that exceed 16 MB.

MongoDB 8.3 introduces a new $subtype expression to extract the subtype of binary data objects.

MongoDB 8.3 introduces new aggregation expressions for converting between BSON and Extended JSON (EJSON) format:

  • $serializeEJSON - Converts BSON values to Extended JSON format with type wrappers. Supports both Canonical and Relaxed Extended JSON formats.

  • $deserializeEJSON - Converts Extended JSON format back to native BSON values.

These expressions can be combined with $convert to parse JSON strings, transform Extended JSON values into native BSON values, and convert back to JSON format.

Starting in MongoDB 8.3, you can use $createObjectId to generate new random ObjectId() values in pipelines and expression-based updates.

MongoDB 8.3 introduces two new aggregation expressions for generating hashes from UTF-8 strings or binary data:

  • $hash - Generates a BinData hash value from a UTF-8 string or binary data using MD5, SHA-256, or XXH64.

  • $hexHash - Generates an uppercase hexadecimal string hash from a UTF-8 string or binary data using MD5, SHA-256, or XXH64.

Starting in MongoDB 8.3, if unit is not "millisecond" in $dateAdd or $dateSubtract and the input date is before ISODate("1970-01-01T00:00:00Z"), the result will be one second greater than in previous versions of MongoDB. This also affects the results of aggregations that perform time-based calculations like $setWindowFields and $densify.

MongoDB 8.3, continues the behavior introduced in MongoDB 8.2. If a document contains both GeoJSON and legacy numeric coordinate fields, geospatial index generation prioritizes GeoJSON coordinates.

If your documents contain legacy numeric coordinate values that precede GeoJSON coordinates and existing indexes rely on that behavior, you might need to rebuild your geospatial indexes.

This change might require you to rebuild geospatial indexes if your documents contain legacy numeric coordinate values that precede GeoJSON coordinates and existing indexes rely on that behavior. Review geospatial queries to confirm they return expected results.

Starting in MongoDB 8.3, the server is able to parse the full range of all representable double precision floating point numbers. This includes subnormal numbers where the most significant digit has leading zeroes and the exponent has the least possible value.

For details, see Subnormal Numbers.

Starting in MongoDB 8.3, the length of the string you provide to chars is limited to 4096 characters. For details, see $trim Limitations.

Starting in MongoDB 8.3, you can use $mergeObjects in $setWindowFields operations.

Starting in MongoDB 8.3, sp.process() supports the options.limit input parameter. After sp.process() returns limit documents to your terminal, the session ends.

Starting in MongoDB 8.3, the query engine limits the TextOr stage memory usage to 100 megabytes. The TextOr stage processes $text queries that read text score metadata. For example, TextOr processes queries that sort results by text score. If the TextOr stage exceeds this limit:

  • If allowDiskUse is true, the stage spills intermediate results to disk.

  • If allowDiskUse is false, the query fails with an exceeded memory limit error.

In earlier versions, the TextOr stage had no memory limit and consumed RAM without restrictions, risking out-of-memory (OOM) errors.

Starting in MongoDB 8.3, DDL operations and applyOps can only be run on a mongos for all sharded clusters.

MongoDB 8.3 adds the findShardsOnConfigTimeoutMS parameter which sets the timeout in milliseconds for find operations against the config.shards namespace. For details, see findShardsOnConfigTimeoutMS.

MongoDB 8.3 removes the config.csrs.indexes namespace.

Starting in MongoDB 8.3, 2dsphereIndexVersion is set to version 4 by default.

If you need to downgrade the FCV to anything below 8.3, you must first drop the 2dsphere version 4 indexes.

Starting in MongoDB 8.3, shard servers include queries that originate from mongos in their query statistics when queryStats is enabled. Previously, most queries forwarded from mongos to shards did not appear in shard-level query stats, which reduced the completeness of shard-level diagnostics.

Starting in MongoDB 8.3, replica sets that were previously sharded clusters cannot be converted back into replica sets.

The conversion of a sharded cluster into a replica set preserves sharding metadata from its prior deployment, including a shard identity document, which blocks it from again becoming a sharded cluster. If you attempt a self-managed conversion back into a sharded cluster, MongoDB returns an error.

To convert such replica sets into sharded clusters, contact Technical Support.

MongoDB 8.3 introduces the mongod --replicaSetConfigShardMaintenanceMode option.

In previous releases, converting a replica set to a sharded cluster with an embedded config shard required you to first migrate to a sharded cluster with a dedicated config server replica set.

If you restart a replica set with the --replicaSetConfigShardMaintenanceMode and --configsvr options, you can convert the primary node directly into an embedded config shard.

For more information, see Convert Replica Set to an Embedded Config Shard.

Starting in MongoDB 8.3, refineCollectionShardKey for time-series collections only accepts shard keys specified using the collection's logical meta and time fields. MongoDB no longer supports specifying keys using the underlying buckets format.

Starting in MongoDB 8.3, creating an index with the name of "_id_" or specifying a hint of "_id_" on time series collections returns an error.

Starting in MongoDB 8.3, you cannot create a timeField that starts with a $ character.

Starting in MongoDB 8.3, you can use the following new fields to track query memory use:

Field
Description

inUseTrackedMemBytes

Number of bytes of tracked memory in use by the current query operation.

peakTrackedMemBytes

Maximum number of bytes of tracked memory in use by the current query operation.

Both fields appear in the following places:

The peakTrackedMemBytes field also appears in the following places:

Starting in 8.3, use the following new metrics in $queryStats to measure the behavior of checkForInterrupt:

  • metrics.numInterruptChecksPerSec

  • metrics.overdueInterruptApproxMaxMillis

Starting in MongoDB 8.3, slow query log entries have an optional originalQueryShapeHash field that contains that query shape of the following operations that originate on the mongos :

MongoDB 8.3 introduces slow in-progress query log entries. Log messages on slow in-progress queries contain less information than standard slow query logs. MongoDB logs queries at most once if the query's duration surpasses the slowOpInProgressThreshold. You can set the threshold with db.setProfilingLevel() or the new mongod --defaultSlowInProgMS command line option.

Starting in MongoDB 8.3, if you run explain() against a database that does not exist on a sharded cluster, the execution stage reaches the end-of-stream and the operation does not create the database. For more information on end-of-stream execution stats, see explain.executionStats.executionStages.isEOF.

Starting in MongoDB 8.3, you cannot specify SCRAM-SHA-1 for authenticationMechanisms while also specifying mongod --tlsFIPSMode or mongos --tlsFIPSMode.

If you try to specify SCRAM-SHA-1 for authenticationMechanisms while also specifying --tlsFIPSMode, the server throws an error and logs a message similar to the following:

SCRAM-SHA-1 is not allowed in FIPS mode.

To upgrade to MongoDB 8.3, refer to the upgrade instructions specific to your MongoDB deployment:

If you need guidance on upgrading to 8.3, MongoDB professional services offer support to help ensure a smooth transition without interruption to your MongoDB application. To learn more, see MongoDB Consulting.

To download MongoDB 8.3, go to the MongoDB Download Center.

Starting in MongoDB 8.3, you can downgrade your MongoDB version to the immediately previous minor or major version.

MongoDB supports single-version downgrades along adjacent versions only. You cannot downgrade to a release that is multiple versions behind your current release.

  • For any versions, major or minor, you can upgrade or downgrade to its adjacent neighbors. For example, you can downgrade from 8.3 to 8.2 or upgrade from 7.0 to 8.0.

  • For all versions, major or minor, you can downgrade to the immediately previous major version. For example, from 8.3 to 8.0.

  • For any minor version, you can upgrade to the immediately next version. For example, from 8.2 to 8.3.

MongoDB 8.3 includes features that are not compatible with earlier releases. Downgrading from 8.3 to an earlier release requires that you remove data that uses these features.

For more information, see Backward-Incompatible Features.

Back

Changelog

On this page