Docs Menu
Docs Home
/
MongoDB Manual
/

Release Notes for MongoDB 6.0

On this page

  • Patch Releases
  • Aggregation
  • Change Streams
  • Cluster Administration
  • Clustered Collections
  • Indexes
  • Installation
  • Replica Sets
  • Security
  • Sharding
  • Slot-Based Query Execution Engine
  • Stable API
  • Time Series Collections
  • General Improvements
  • Changes Affecting Compatibility
  • Upgrade Procedures
  • Downgrade Consideration
  • Download
  • Known Issues
  • Report an Issue

This page describes changes and new features introduced in MongoDB 6.0.

MongoDB 6.0 is a Major Release, which means that it is supported for both MongoDB Atlas and on-premises deployments. MongoDB 6.0 includes changes introduced in MongoDB Rapid Releases 5.1, 5.2, and 5.3. This page describes changes introduced in those Rapid Releases and MongoDB 6.0.

To learn more about the differences between Major and Rapid releases, see MongoDB Versioning.

Warning

Past Release Limitations

The Critical Advisories below affect some prior MongoDB versions. If your deployment depends on features impacted by a Critical Advisory, upgrade to the latest available patch release.

Issue
Affected Versions
SERVER-68511
6.0.0
6.0.0 - 6.0.12
6.0.0 - 6.0.11 (Time Series collections sharded by metaField embedded objects)
6.0.0 - 6.0.13
6.0.0 - 6.0.4 (ARM64 or POWER system architectures)
6.0.0 - 6.0.5 (Incremental backups on Ops Manager or Cloud Manager clusters)

Important

CSFLE and Queryable Encryption self-lookup may send malformed values in subpipelines

  • SERVER-79637 Incorrect query results in $lookup with TS foreign collection using a correlated predicate

  • SERVER-86474 $_internalApplyOplogUpdate with $set: { foo: Timestamp(0, 0) } is not replicated correctly

  • SERVER-89625 Handle directoryPerDb and wiredTigerDirectoryForIndexes correctly when reporting namespaces and UUIDs during a backup

  • WT-10807 Skip in-memory deleted pages as part of the tree walk

  • WT-12609 Improve checkpoint cleanup and page eviction logic

  • All Jira issues closed in 6.0.16

  • 6.0.16 Changelog

Important

Fix for MongoDB Server may allow successful untrusted connection

Due to CVE-2024-1351, in MongoDB 6.0 prior to 6.0.14, under certain configurations of --tlsCAFile and CAFile, MongoDB Server may skip peer certificate validation which may result in untrusted connections to succeed.

This may effectively reduce the security guarantees provided by TLS and open connections that should have been closed due to failing certificate validation. This issue affects the following MongoDB Server versions:

  • 7.0.0 - 7.0.5

  • 6.0.0 - 6.0.13

  • 5.0.0 - 5.0.24

  • 4.4.0 - 4.4.28

CVSS Score: 8.8

CWE: CWE-295: Improper Certificate Validation

Issues Fixed:

Issues Fixed:

Issues fixed:

Issues fixed:

Issues fixed:

The rest of this page describes changes and new features introduced in MongoDB 6.0.

MongoDB 6.0 introduces the following aggregation stages:

Stage
Description
Creates new documents in a sequence of documents where values in a specified field are missing.
Returns literal documents from input expressions.

Populates null and missing field values within documents.

New in version 6.0.3: Provides size and data distribution information on sharded collections.

MongoDB 6.0 introduces the following aggregation operators:

Operator
Description
Returns the bottom element within a group according to the specified sort order.
Returns an aggregation of the bottom n elements within a group, according to the specified sort order.
Returns an aggregation of the first n elements within a group. Distinct from the $firstN array operator.
Returns a specified number of elements from the beginning of an array. Distinct from the $firstN accumulator.
Returns an aggregation of the last n elements within a group. Distinct from the $lastN array operator.
Returns a specified number of elements from the end of an array. Distinct from the $lastN accumulator.

Fills null and missing fields in a window using linear interpolation based on surrounding field values.

Last observation carried forward. Sets values for null and missing fields in a window to the last non-null value for the field.

Returns an aggregation of the n maximum valued elements within a group. Distinct from the $maxN array operator.
Returns the n largest values in an array. Distinct from the $maxN accumulator.
Returns an aggregation of the n minimum valued elements within a group. Distinct from the $minN array operator.
Returns the n smallest values in an array. Distinct from the $minN accumulator.
Sorts an array based on its elements.
Returns the top element within a group according to the specified sort order. Distinct from the command top.
Returns an aggregation of the top n elements within a group, according to the specified sort order.

Returns the incrementing ordinal from a timestamp as a long.

Returns the seconds from a timestamp as a long.

Starting in MongoDB 5.1, the $lookup and $graphLookup aggregation stages support sharded collections in the from parameter.

In previous versions of MongoDB, $lookup and $graphLookup only allowed for unsharded from collections.

You cannot use the $graphLookup stage within a transaction while targeting a sharded collection.

Starting in MongoDB 5.1, change streams are optimized, providing more efficient resource utilization and faster execution of some aggregation pipeline stages.

Starting in MongoDB 6.0, the change stream output has a new wallTime field that contains the server date and time of the database operation.

Starting in MongoDB 6.0, you can use change streams to output the version of a document before and after changes (the document pre- and post-images). For examples, see Change Streams with Document Pre- and Post-Images.

Starting in MongoDB 6.0, change streams can show additional change events for DDL operations, like creating indexes and dropping collections.

For more information, see Expanded Events.

Starting in MongoDB 6.0, whenever possible, match filters are applied to change streams earlier than in prior releases. This improves performance. However, when a filter is narrowly defined, an earlier match may cause an operation that succeeds in prior versions to fail in 6.0.

Starting in MongoDB 6.0, you can use Cluster Parameters for a Self-Managed Deployment to modify and retrieve configuration options for all nodes in a replica set or sharded cluster. You can use setClusterParameter to modify cluster-wide options and getClusterParameter to retrieve the value of a cluster parameter.

Starting in MongoDB 6.0, you can use ShardingTaskExecutorPoolMinSizeForConfigServers and ShardingTaskExecutorPoolMaxSizeForConfigServers to set the minimum and maximum sharding TaskExecutor connection pool size for configuration servers.

Starting in MongoDB 6.0, you can use changeStreamOptions to control the retention policy of change stream pre- and post-images.

Starting in MongoDB 6.0, you can use the new internalSessionsReapThreshold parameter to set the session limit for internal session metadata deletion.

Starting in MongoDB 5.3, support for multiple arbiters in a replica set is disabled by default. To enable support for multiple arbiters, start each node with the allowMultipleArbiters parameter.

Starting in MongoDB 5.3, you can create clustered collections.

Clustered collections store indexed documents in the same WiredTiger file as the index specification. Storing the collection's documents and index in the same file provides benefits for storage and performance compared to regular indexes.

Clustered collections are created with a clustered index. The clustered index specifies the order in which documents are stored.

To create a clustered collection, see Examples.

To learn about the benefits compared to a normal collection, see Clustered Collections.

Starting in MongoDB 5.1, you can use the collMod database command to add the expireAfterSeconds option to an existing single-field non-TTL index.

Starting in MongoDB 6.0, you can use the prepareUnique and unique options for the collMod command to convert an existing standard index to a unique index.

Starting in MongoDB 6.0, you can use the operators $in and $or to create partial indexes. The partialFilterExpression maximum depth is also expanded from 2 to 4. You can now use the operators $and and $or at non-top-levels.

Starting in MongoDB 5.1, there is a new SE Linux Policy for:

  • MongoDB Enterprise Server

  • MongoDB Community Edition Server

running on Red Hat Linux. The SELinux policy is for use with default installations using rpm installer packages.

Starting in MongoDB 5.3, support for multiple arbiters in a replica set is disabled by default. To enable support for multiple arbiters, start each node with the allowMultipleArbiters parameter.

Starting in MongoDB 5.2, the initialSyncMethod determines whether initial sync is a logical initial sync or a file copy based initial sync.

initialSyncMethod is only available in MongoDB Enterprise Server.

Starting in MongoDB 6.0, you can use the oplogBatchDelayMillis server parameter to specify a delay for writes of oplog batches on secondaries. Adding a short oplog batch delay can reduce IOPS on secondaries, but adds latency for writes with write concern "majority".

For more information, see oplogBatchDelayMillis.

Starting in MongoDB 6.0 Enterprise, you can encrypt the MongoDB audit log.

To configure the audit log, see Audit Log.

Starting in MongoDB 6.0.3, data in sharded clusters is distributed based on data size rather than number of chunks. Be aware of the following significant changes in sharded cluster data distribution behavior:

  • The balancer distributes ranges of data rather than chunks. The balancing policy looks for evenness of data distribution rather than chunk distribution.

  • Chunks are not subject to auto-splitting. Instead, chunks are split only when moved across shards.

  • A chunk is now referred to as a range.

  • moveRange has replaced moveChunk.

Starting in MongoDB 5.2, the default chunk size is 128 megabytes. In earlier versions of MongoDB, the default chunk size is 64 megabytes.

Starting in MongoDB 6.0, the enableSharding command is no longer required to shard a collection.

Starting in MongoDB 5.3, the balancerCollectionStatus command returns detailed information when run on a namespace going through chunk defragmentation. The output includes the current phase of the defragmentation and how many chunks are left to process.

To see example output, see Ongoing Defragmentation Process.

Starting in MongoDB 5.1, MongoDB uses a new query execution engine for eligible queries, called the slot-based query execution engine. If the slot-based query execution engine is used, new fields are included in the query explain plan output.

  • The new query execution engine is used if possible.

  • If the new query execution engine is used, new fields are included in the query explain plan output.

Starting in version 6.0, MongoDB uses the slot-based query execution engine to execute eligible $group and $lookup stages when certain conditions are met.

For more information, see Slot-Based Query Execution Engine Pipeline Optimizations.

You can set the size of the plan cache for the new query engine with the planCacheSize parameter.

Increasing the plan cache size adds more cached plan cache query shapes for the query planner. This can improve query performance, but increases memory usage.

The following sections describe additions to the Stable API introduced in MongoDB 6.0.

To see the full list of database commands available in the Stable API, see Stable API Changelog.

Starting in MongoDB 6.0, the following database commands are supported in the Stable API:

Command
Description
Stable API Version
Counts the number of documents in a collection or a view. (Also available in the Stable API for 5.0-series deployments starting in MongoDB 5.0.9.)
V1

Starting in MongoDB 6.0, the following aggregation stages and operators are supported in the Stable API:

Stage or Operator
Description
Stable API Version
Returns the bottom element within a group, according to the specified sort order.
V1
Returns an aggregation of the bottom n elements within a group, according to the specified sort order.
V1
Increments a Date() object by a specified number of time units.
V1
Returns the difference between two dates.
V1
Decrements a Date() object by a specified number of time units.
V1
Truncates a date.
V1

Creates new documents in a sequence of documents where certain values in a field are missing.

V1
$firstN (aggregation accumulator)
Returns an aggregation of the first n elements within a group.
V1
$firstN (array operator)
Returns a specified number of elements from the beginning of an array.
V1
Returns the value of a specified field from a document.
V1
$lastN (aggregation accumulator)
Returns an aggregation of the last n elements within a group.
V1
$lastN (array operator)
Returns a specified number of elements from the end of an array.
V1

Last observation carried forward. Sets values for null and missing fields in a window to the last non-null value for the field.

V1
$maxN (aggregation accumulator)
Returns an aggregation of the maximum value n elements within a group.
V1
$maxN (array operator)
Returns the n largest values in an array.
V1
$minN (aggregation accumulator)
Returns an aggregation of the minimum value n elements within a group.
V1
$minN (array operator)
Returns the n smallest values in an array.
V1
Adds, updates, or removes a specified field in a document.
V1
Performs operations on a specified span of documents in a collection, known as a window, and returns the results based on the chosen window operator.
V1
Sorts an array based on its elements.
V1
Returns the top element within a group according to the specified sort order.
V1
Returns an aggregation of the top n elements within a group, according to the specified sort order.
V1

Returns the incrementing ordinal from a timestamp as a long.

V1

Returns the seconds from a timestamp as a long.

V1

Starting in MongoDB 6.0, the following window operators are supported in the Stable API:

Window Operator
Description
Stable API Version
Returns an array of all unique values that results from applying an expression to each document.
V1
Returns the average for the specified expression. Ignores non-numeric values.
V1
Returns the number of documents in the group or window.
V1
Returns the population covariance of two numeric expressions.
V1
Returns the sample covariance of two numeric expressions.
V1
Returns the document position (known as the rank) relative to other documents in the $setWindowFields stage partition. There are no gaps in the ranks. Ties receive the same rank.
V1
Returns the average rate of change within the specified window.
V1
Returns the position of a document (known as the document number) in the $setWindowFields stage partition. Ties result in different adjacent document numbers.
V1
Returns the exponential moving average for the numeric expression.
V1
Returns the value that results from applying an expression to the first document in a group or window.
V1
Returns the approximation of the area under a curve.
V1
Returns the value that results from applying an expression to the last document in a group or window.
V1

Last observation carried forward. Sets values for null and missing fields in a window to the last non-null value for the field.

V1
Returns the maximum value that results from applying an expression to each document.
V1
Returns the minimum value that results from applying an expression to each document.
V1
Returns an array of values that result from applying an expression to each document.
V1
Returns the document position (known as the rank) relative to other documents in the $setWindowFields stage partition.
V1
Returns the value from an expression applied to a document in a specified position relative to the current document in the $setWindowFields stage partition.
V1
Returns the population standard deviation that results from applying a numeric expression to each document.
V1
Returns the sample standard deviation that results from applying a numeric expression to each document.
V1
Returns the sum that results from applying a numeric expression to each document.
V1

The following sections describe improvements and new features for time series collections.

MongoDB 5.1 provides support for sharded time series collections.

See:

Starting in MongoDB 6.0, you can modify the granularity of sharded time series collections.

Starting in MongoDB 5.1, time series collections support update and delete operations with limitations.

Starting in MongoDB 5.2, time series collections use column compression. Column compression adds a number of innovations that work together to significantly improve practical compression, reduce your data's overall storage on disk, and improve read performance.

Starting in MongoDB 6.0, arrays are also compressed as part of the time series column compression.

Starting in MongoDB 5.3, you can use the $geoNear pipeline operator on any field in a time series collection.

Starting in MongoDB 6.0, you can perform the following operations on time series collections:

Sort operations on time series collections can use indexes to improve performance. For more information and an example, see Use Secondary Indexes to Improve Sort Performance.

Starting in MongoDB 6.0.7, FIPS mode supports OpenSSL3 for the following operating systems:

  • Ubuntu 22.04

  • RHEL 9

  • Amazon Linux 2023

Starting in MongoDB 8.0, FIPS mode supports OpenSSL3 for Amazon Linux 2023.3.

Starting in MongoDB 6.0, you can change a capped collection's maximum size, either in bytes or in number of documents, using the collMod command. See Resize a Capped Collection for more details.

Starting in MongoDB 6.0, the collStats output includes the collStats.numOrphanDocs field that shows the number of orphaned documents in the collection.

Starting in MongoDB 6.0 (and 5.0.9), you can exclude embedded fields from the serverStatus output.

Starting in MongoDB 6.0, the Mongo() connection object has the following new methods:

Starting in MongoDB 6.0 (and 5.0.10), diagnostic backtrace generation in arm64 is supported.

Starting in MongoDB 5.2, you can use the following new server parameters to configure the refresh interval for cached LDAP user information:

Starting in MongoDB 5.2, the update interval for cached user information retrieved from an LDAP server depends on ldapShouldRefreshUserCacheEntries:

Starting in MongoDB 5.2, the Explain Results support the $group stage (GROUP), which separates documents into groups according to a group key, in the stage field.

Some changes can affect compatibility and may require user actions. For a detailed list of compatibility changes, see Compatibility Changes in MongoDB 6.0.

Important

Feature Compatibility Version

To upgrade to MongoDB 6.0 from a 5.0 deployment, the 5.0 deployment must have featureCompatibilityVersion set to 5.0. To check the version:

db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )

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

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

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

For example, you may downgrade a 6.0-series to a 5.0-series deployment. However, further downgrading that 5.0-series deployment to a 4.4-series deployment is not supported.

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

This section describes known issues in MongoDB 6.0 and their resolution status.

In Version
Issue
Status
6.0.0
SERVER-68062: Multi-stage aggregations that use $geoNear may violate constraints.
Resolved in 6.0.1.

To report an issue, see the MongoDB GitHub repository for instructions on how to file a JIRA ticket for the MongoDB server or one of the related projects.

Back

Changelog