Docs Menu
Docs Home
/
MongoDB Manual
/

Release Notes for MongoDB 8.0 (Release Candidate)

On this page

  • Platform Support Updates
  • Logging
  • Aggregation
  • Sharding
  • Replication
  • General Changes
  • Security
  • Changes Introduced in 7.X-Series Rapid Releases
  • Upgrade Procedures
  • Download

Important

MongoDB 8.0 Release Candidates

MongoDB 8.0 binaries are currently available only as release candidates. Release candidates can be used for early testing of new features, but are not suitable for production deployments.

This version of the manual is for an upcoming release and is currently a work in progress.

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

MongoDB 8.0 is a Major Release, which means that it is supported for both MongoDB Atlas and on-premises deployments. MongoDB 8.0 includes changes introduced in MongoDB Rapid Releases 7.1, 7.2, and 7.3. To see changes introduced in these rapid releases, see Changes Introduced in 7.X-Series Rapid Releases.

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

Starting in MongoDB 8.0, new MongoDB Server versions (major and minor) support the minimum operating system (OS) minor version defined by the OS vendor. After an OS minor version is no longer supported by the OS vendor, MongoDB updates the MongoDB Server to support the next OS minor version. For details, see MongoDB Platform Support Improvements.

MongoDB 8.0 supports the following minimum OS minor versions:

  • Red Hat Enterprise Linux 8.8

  • Red Hat Enterprise Linux 9.3

  • SUSE Linux Enterprise Server 15 SP5

  • Amazon Linux 2023 version 2023.3

Starting in MongoDB 8.0, you can configure the Database Profiler to log slow operations based on the time that MongoDB spends working on that operation, rather than the total latency for the operation. This means that factors such as waiting for locks and flow control do not affect whether an operation exceeds the slow operation threshold.

This change provides the following improvements for logging and query analysis:

  • Slow queries are logged more accurately based on the time MongoDB spends processing the query.

  • Query analysis tools such as the Query Profiler, Performance Advisor, and Search Query Telemetry report slow operations based on workingMillis instead of durationMillis. This change provides a more accurate view of problematic queries.

  • Slow query logs include a metric for the time queued on execution tickets, queues.execution.totalTimeQueuedMicros. This metric helps identify whether an operation is slow because of the time it takes to complete, or the time it spends waiting to start.

For more information, see db.setProfilingLevel().

When you specify a filter for the database profiler, you can log operations based on the new workingMillis metric. You can log operations based on both workingMillis and durationMillis and set each metric to a different threshold.

Starting in MongoDB 8.0, you can use the $convert operator to perform the following conversions:

  • String values to binData values

  • binData values to string values

MongoDB 8.0 also includes a new helper expression, $toUUID, which provides simplified syntax for converting strings to UUID values.

Starting in MongoDB 8.0, $queryStats improves tracking and reporting metrics for change streams. For more information, see $queryStats Change Streams Behavior.

Starting in MongoDB 8.0, null and missing field values in $denseRank and $rank sortBy operations are treated the same when calculating rankings. This change makes the behavior of denseRank and rank consistent with $sort.

Starting in MongoDB 8.0, you can use the directShardOperations role to perform maintenance operations that require you to execute commands directly against a shard.

Warning

Running commands using the directShardOperations role can cause your cluster to stop working correctly and may cause data corruption. Only use the directShardOperations role for maintenance purposes or under the guidance of MongoDB support. Once you are done performing maintenance operations, stop using the directShardOperations role.

Starting in MongoDB 8.0, you can unshard existing sharded collections with the unshardCollection command or the sh.unshardCollection() method. This operation moves all documents in the collection onto a specified shard or the shard with the least amount of data.

Starting in MongoDB 8.0, the following metrics are available when using the replSetGetStatus command:

Starting in MongoDB 8.0, secondaries write and apply oplog entries for each batch in parallel. A writer thread reads new entries from the primary and writes them to the local oplog. An applier thread asynchronously applies these changes to the local database. This changes increases replication throughput for secondaries.

This introduces a breaking change for metrics.repl.buffer, as it now provides metrics on two buffers instead of one.

MongoDB 8.0 deprecates the following server status metrics:

MongoDB 8.0 adds the following server status metrics:

Starting in MongoDB 8.0, movePrimary doesn't invalidate collections that have change streams. The change streams can continue to read events from collections after the collections are moved to a new shard.

For details, see Moving Collections that have Change Streams.

Starting in MongoDB 8.0, you can move an unsharded collection to a different shard using the moveCollection command.

To learn more, see Moveable Collections.

Starting in MongoDB 8.0, Bulk.insert() and data ingestion workloads may perform better. However, shutting down MongoDB immediately after running these workloads might take longer because of the extra data being flushed to disk.

Starting in MongoDB 8.0, you can configure a config server to store application data in addition to the usual sharded cluster metadata. The config server is then known as a config shard. For details, see Config Shards.

Starting in MongoDB 8.0, you can use the $lookup stage within a transaction while targeting a sharded collection.

Starting in MongoDB 8.0, you can use the new autoCompact command to perform background compaction. If enabled, the server attempts to keep free space within each collection and index below the specified the freeSpaceTargetMB value.

If enabled, the compact command returns an estimate of how much space, in bytes, compaction can reclaim from the targeted collection. If you run compact with dryRun set to true, MongoDB only returns the estimated value and does not perform any kind of compaction.

Starting in MongoDB 8.0, the getParameter command accepts a setAt field. You can use this field to filter the allParameters: true return document to show only those parameters that you can set at startup or runtime.

Starting in MongoDB 8.0, you can use the new bulkWrite command to perform many insert, update, and delete operations on multiple collections in one request. The existing db.collection.bulkWrite() method only allows you to modify one collection in one request.

Starting in MongoDB 8.0, you can use read concern "snapshot" on capped collections.

In MongoDB 8.0, if you add or remove a shard while your cluster executes a DDL operation (operation that modifies a collection such as reshardCollection), any operation that adds or removes a shard only executes after the concurrent DDL operation finishes.

Starting in MongoDB 8.0, you can use the defaultMaxTimeMS cluster parameter to specify a default time limit for individual read operations to complete.

MongoDB 8.0 introduces a new query shape. The pre-existing query shape is renamed as the plan cache query shape.

Starting in MongoDB 8.0, you can add query settings for the new query shape. The query optimizer uses the query settings as an additional input during query planning, which affects the plan selected to run a query that has a matching query shape.

Query settings have improved functionality compared to index filters. Index filters are also deprecated starting in MongoDB 8.0, and you should avoid using them.

Starting in MongoDB 8.0, queryShapeHash is included in the following output:

Starting in MongoDB 8.0, the pre-existing queryHash field is renamed to planCacheShapeHash. If you're using an earlier MongoDB version, you'll see queryHash instead of planCacheShapeHash.

Starting in MongoDB 8.0, the updateOne() method supports a sort option. This controls how MongoDB orders the document before it selects the document to receive the update.

Previous releases use the findAndModify() and findOneAndUpdate() methods to update the first document in a user-specified sort order. Support for retryable writes requires these methods to copy the entire document to a special side collection for each node, which is a more expensive operation than the updateOne() method with the new sort option.

Starting in MongoDB 8.0, MongoDB uses an upgraded version of TCMalloc that uses per-CPU caches, instead of per-thread caches, to reduce memory fragmentation and make your database more resilient to high-stress workloads.

The following new serverStatus metrics report information about tcmalloc usage:

Starting in MongoDB 8.0, the tcmallocEnableBackgroundThread is enabled by default. This allows MongoDB to periodically release memory back to the operating system.

Starting in version 8.0, MongoDB may execute certain time series queries using block processing. This performance improvement processes queries in "blocks" of data, rather than individual values. Block processing improves query execution speed and throughput when working with time series collections.

To see if your time series query uses block processing, check the explain.queryPlanner.winningPlan.slotBasedPlan.stages field in the explain plan output.

To learn more, see Block Processing.

Starting in MongoDB 8.0, a limited set of queries (including _id equality matches) skip regular query planning and execution. Instead, these queries use an optimized index scan plan consisting of one of these plan stages:

  • EXPRESS_CLUSTERED_IXSCAN

  • EXPRESS_DELETE

  • EXPRESS_IXSCAN

  • EXPRESS_UPDATE

For more information on query plans, see Explain Results.

Starting in MongoDB 8.0, rejected query plans only contain the find portion of the query. In previous versions, rejected plans can contain aggregation stages like $group. Those aggregation stages aren't used by the query planner to choose the winning plan, so the rejectedPlans field only contains the portion of the query that was used to choose the winning plan.

This change also ensures that executionStats for rejected plans are non-zero. As a result, you can now see statistics such as how many documents or keys a rejected plan examined.

For more information on rejected query plans, see explain.queryPlanner.rejectedPlans.

Starting in MongoDB 8.0, insert operations for multi-document transactions no longer produce individual oplog entries. Instead, multi-document inserts are batched as a single entry. The change stream insert event for each document has the same clusterTime.

This change increases performance of multi-document insert operations and eliminates possible replication lag caused by multiple oplog writes.

Starting in MongoDB 8.0, when multiple identity providers (IDP) are defined, the oidcIdentityProviders parameter accepts duplicate issuer values as long as the audience value is unique for each issuer. This is also available in versions 7.3 and 7.0.

Starting in MongoDB 8.0, namespaces in subpipelines inside $lookup and $unionWith are validated to ensure the correct use of from and coll fields.

For details, see $lookup subpipelines and $unionWith subpipelines.

Starting in MongoDB 8.0, Queryable Encryption supports range queries on encrypted fields using the $lt, $lte, $gt, and $gte operators. For details, see Supported Operations for Queryable Encryption. To enable range queries on encrypted fields, see Create an Encryption Schema.

Starting in MongoDB 8.0, you can specify the OCSF schema for audit log messages. The OCSF schema provides logs in a standardized format compatible with log processors.

To set the schema used for log messages, use the auditLog.schema configuration file option.

For example log messages in OCSF format, see OCSF Schema Audit Messages.

MongoDB 8.0 includes changes and features from the following Rapid Release versions:

Important

Feature Compatibility Version

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

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

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

If you need guidance on upgrading to 8.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.

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

Back

Release Notes