> For the complete MongoDB documentation index, see www.mongodb.com/docs/llms.txt

# Release Notes for MongoDB 8.0

**Warning: MongoDB Is Incompatible with Linux Kernel 6.19 Through 7.0.13**

Due to an incompatibility between certain Linux kernel releases and the currently vendored version of TCMalloc, running MongoDB with a Linux kernel version from 6.19 through 7.0.13 can cause MongoDB to crash. To prevent this crash, MongoDB detects these kernel versions and stops during startup. This incompatibility affects all MongoDB packages, including those obtained from the MongoDB website, a package manager, or Docker.

Linux kernel version 7.0.14 and later resolves this incompatibility. To run MongoDB on an affected system, upgrade to Linux kernel version 7.0.14 or later.

For general guidance on MongoDB version numbering, release types, and upgrade paths, see [MongoDB Versions and Upgrade Paths.](https://www.mongodb.com/docs/mongodb-versions.md#std-label-versions-and-upgrade-paths)

**Important:**

If you run a MongoDB version earlier than 8.0.5 with TLS enabled using the `openssl-3.2.2-6.el9_5.x86_64` package, `mongod` may show high CPU usage even under a light workload due to a openssl version bug. To resolve this issue, upgrade to MongoDB 8.0.5 or later, or use one of the following workarounds:

- Downgrade the openssl package to a version earlier than `openssl-3.2.2-6.el9_5.x86_64`.

- Disable TLS for the MongoDB deployment (not recommended).

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. This page describes changes introduced in those Rapid Releases and MongoDB 8.0.

MongoDB Atlas auto-upgrades dedicated clusters (M10+) to the Major version when the `Latest Release (auto-upgrades)` option is enabled. To manually upgrade your cluster, see [Upgrade a Cluster to a New MongoDB Version](https://www.mongodb.com/docs/atlas/tutorial/major-version-change.md#std-label-upgrade-major-MongoDB-version). To learn more about MongoDB cluster versions in Atlas, see [Which versions of MongoDB do Atlas clusters use.](https://www.mongodb.com/docs/atlas/reference/faq/database.md#std-label-supported-mdb-versions)

To learn more about the differences between Major and Rapid releases, see [MongoDB Versioning.](https://www.mongodb.com/docs/manual/reference/versioning.md#std-label-release-version-numbers)

**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-95067](https://jira.mongodb.org/browse/SERVER-95067) | 8.0.0 - 8.0.3 |
| [SERVER-94559](https://jira.mongodb.org/browse/SERVER-94559) | 8.0.0 - 8.0.3 |
| [SERVER-131805](https://jira.mongodb.org/browse/SERVER-131805) | 8.0.0 - 8.0.33 |

## Patch Releases

### 8.0.34 - Oct 13, 2026

This release contains important security and reliability improvements.

**Important:**

MongoDB 8.0.34 contains fixes for:

- [CVE-2026-96297](https://www.cve.org/CVERecord?id=CVE-2026-96297)

- [CVE-2026-103965](https://www.cve.org/CVERecord?id=CVE-2026-103965)

- [CVE-2026-104004](https://www.cve.org/CVERecord?id=CVE-2026-104004)

For the latest information about MongoDB security updates, see [MongoDB Security Bulletins.](https://www.mongodb.com/resources/products/alerts/?tck=docs)

Issues fixed:

- [SERVER-79980](https://jira.mongodb.org/browse/SERVER-79980) Support TLS 1.3 for Windows

- [SERVER-98105](https://jira.mongodb.org/browse/SERVER-98105) Pause drop pending ident reaper until backup cursor is closed

- [SERVER-131412](https://jira.mongodb.org/browse/SERVER-131412) Improve Validation Expression

- [SERVER-131805](https://jira.mongodb.org/browse/SERVER-131805) Recovered cross-database renameCollection participant can drop the target after stepdown

- [SERVER-132946](https://jira.mongodb.org/browse/SERVER-132946) Heap-use-after-free in $\_internalApplyOplogUpdate stage when reading via getMore after aggregate Invocation is destroyed

- [SERVER-134618](https://jira.mongodb.org/browse/SERVER-134618) Fix serialization of constant values in $bucket stage

- [WT-18353](https://jira.mongodb.org/browse/WT-18353) Checkpoint panics when a file's metadata predates the checkpoint\_backup\_info field

- [All JIRA issues closed in 8.0.34](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.34%27)

- [8.0.34 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.34-changelog)

### 8.0.32 - Sept 11, 2026

This release contains important security and reliability improvements.

**Important:**

MongoDB 8.0.32 contains a fix for:

- [CVE-2026-89099](https://www.cve.org/CVERecord?id=CVE-2026-89099)

For the latest information about MongoDB security updates, see [MongoDB Security Bulletins.](https://www.mongodb.com/resources/products/alerts/?tck=docs)

Issues fixed:

- [SERVER-134063](https://jira.mongodb.org/browse/SERVER-134063) Shred collection validator constants during parsing

- [All JIRA issues closed in 8.0.32](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.32%27)

### 8.0.30 - Sept 8, 2026

This release contains important security and reliability improvements.

**Important:**

MongoDB 8.0.30 contains fixes for:

- [CVE-2026-82056](https://www.cve.org/CVERecord?id=CVE-2026-82056)

- [CVE-2026-82054](https://www.cve.org/CVERecord?id=CVE-2026-82054)

- [CVE-2026-82053](https://www.cve.org/CVERecord?id=CVE-2026-82053)

- [CVE-2026-82076](https://www.cve.org/CVERecord?id=CVE-2026-82076)

- [CVE-2026-82075](https://www.cve.org/CVERecord?id=CVE-2026-82075)

- [CVE-2026-82074](https://www.cve.org/CVERecord?id=CVE-2026-82074)

- [CVE-2026-82071](https://www.cve.org/CVERecord?id=CVE-2026-82071)

- [CVE-2026-82070](https://www.cve.org/CVERecord?id=CVE-2026-82070)

- [CVE-2026-82068](https://www.cve.org/CVERecord?id=CVE-2026-82068)

- [CVE-2026-82067](https://www.cve.org/CVERecord?id=CVE-2026-82067)

- [CVE-2026-82066](https://www.cve.org/CVERecord?id=CVE-2026-82066)

- [CVE-2026-82065](https://www.cve.org/CVERecord?id=CVE-2026-82065)

- [CVE-2026-82064](https://www.cve.org/CVERecord?id=CVE-2026-82064)

- [CVE-2026-82063](https://www.cve.org/CVERecord?id=CVE-2026-82063)

- [CVE-2026-82060](https://www.cve.org/CVERecord?id=CVE-2026-82060)

- [CVE-2026-82052](https://www.cve.org/CVERecord?id=CVE-2026-82052)

- [CVE-2026-82059](https://www.cve.org/CVERecord?id=CVE-2026-82059)

- [CVE-2026-82058](https://www.cve.org/CVERecord?id=CVE-2026-82058)

For the latest information about MongoDB security updates, see [MongoDB Security Bulletins.](https://www.mongodb.com/resources/products/alerts/?tck=docs)

Issues fixed:

- [SERVER-90889](https://jira.mongodb.org/browse/SERVER-90889) Check timeseries collections throught the checkMetadataConsistency command

- [SERVER-108215](https://jira.mongodb.org/browse/SERVER-108215) Impose limits on the number of active multi-document transactions

- [SERVER-110952](https://jira.mongodb.org/browse/SERVER-110952) Creation of untracked legacy timeseries collection may release DDL lock mid-creation due to unknown shard version

- [SERVER-125742](https://jira.mongodb.org/browse/SERVER-125742) Remove the graceful exit for kernel version 7.0.14 and above

- [SERVER-132246](https://jira.mongodb.org/browse/SERVER-132246) minWaitForStreamingHelloMillis default breaks spec-compliant drivers

- [SERVER-130571](https://jira.mongodb.org/browse/SERVER-130571) Limit use of $\_internalIndexKey to internal clients only

- [SERVER-130926](https://jira.mongodb.org/browse/SERVER-130926) Usage of strtoll in generateJSONSchemaArraySingleSchemaError can throw std::exception

- [SERVER-130901](https://jira.mongodb.org/browse/SERVER-130901) Limit JSON Pointer path depth to 255 for $jsonSchema.encryptMetadata.keyId

- [SERVER-130785](https://jira.mongodb.org/browse/SERVER-130785) Fix LDAP roles for pooled LDAP connections

- [SERVER-128253](https://jira.mongodb.org/browse/SERVER-128253) Integer overflow in query planner explodeForSort() can trigger mongod denial of service

- [SERVER-132650](https://jira.mongodb.org/browse/SERVER-132650) Make `mongos` use the configurable minimum timeout for pre-auth streamable hello

- [SERVER-132275](https://jira.mongodb.org/browse/SERVER-132275) \[v8.0] Reject $lookup with multiple pipeline arguments

- [SERVER-131860](https://jira.mongodb.org/browse/SERVER-131860) Improve wiredtiger config string handling

- [SERVER-131423](https://jira.mongodb.org/browse/SERVER-131423) Apply consistent redaction in reportState()

- [SERVER-131326](https://jira.mongodb.org/browse/SERVER-131326) Repeat stmtIds on writes crash the server

- [SERVER-131229](https://jira.mongodb.org/browse/SERVER-131229) enforce case-sensitivity in options validation

- [SERVER-131562](https://jira.mongodb.org/browse/SERVER-131562) Heap memory disclosure via mis-indexed tie-break vectors in the query multi-planner

- [SERVER-131420](https://jira.mongodb.org/browse/SERVER-131420) Reject WiredTiger configString type overrides other than "type=file"

- [SERVER-130759](https://jira.mongodb.org/browse/SERVER-130759) Adjust invariant condition to account for arbiter nodes

- [SERVER-131870](https://jira.mongodb.org/browse/SERVER-131870) Fix heap use-after-free

- [SERVER-131202](https://jira.mongodb.org/browse/SERVER-131202) Fix aggregation pipeline updateLookup with dollar-prefixed fields

- [SERVER-127985](https://jira.mongodb.org/browse/SERVER-127985) Reject regex matches that do not lay on UTF-8 character boundaries

- [SERVER-130306](https://jira.mongodb.org/browse/SERVER-130306) Fix heap-use-after-free in TextMatchExpression

- [All JIRA issues closed in 8.0.30](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.30%27)

- [8.0.30 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.30-changelog)

### 8.0.29 - Aug 11, 2026

This release contains important security and reliability improvements.

**Important:**

MongoDB 8.0.29 contains fixes for:

- [CVE-2026-18687](https://www.cve.org/CVERecord?id=CVE-2026-18687)

- [CVE-2026-18688](https://www.cve.org/CVERecord?id=CVE-2026-18688)

- [CVE-2026-18690](https://www.cve.org/CVERecord?id=CVE-2026-18690)

- [CVE-2026-18691](https://www.cve.org/CVERecord?id=CVE-2026-18691)

- [CVE-2026-18693](https://www.cve.org/CVERecord?id=CVE-2026-18693)

- [CVE-2026-18694](https://www.cve.org/CVERecord?id=CVE-2026-18694)

- [CVE-2026-18695](https://www.cve.org/CVERecord?id=CVE-2026-18695)

- [CVE-2026-18696](https://www.cve.org/CVERecord?id=CVE-2026-18696)

- [CVE-2026-18697](https://www.cve.org/CVERecord?id=CVE-2026-18697)

- [CVE-2026-18698](https://www.cve.org/CVERecord?id=CVE-2026-18698)

- [CVE-2026-18699](https://www.cve.org/CVERecord?id=CVE-2026-18699)

- [CVE-2026-18700](https://www.cve.org/CVERecord?id=CVE-2026-18700)

- [CVE-2026-18701](https://www.cve.org/CVERecord?id=CVE-2026-18701)

- [CVE-2026-18702](https://www.cve.org/CVERecord?id=CVE-2026-18702)

- [CVE-2026-18705](https://www.cve.org/CVERecord?id=CVE-2026-18705)

- [CVE-2026-18708](https://www.cve.org/CVERecord?id=CVE-2026-18708)

- [CVE-2026-18709](https://www.cve.org/CVERecord?id=CVE-2026-18709)

- [CVE-2026-18711](https://www.cve.org/CVERecord?id=CVE-2026-18711)

- [CVE-2026-18712](https://www.cve.org/CVERecord?id=CVE-2026-18712)

For the latest information about MongoDB security updates, see [MongoDB Security Bulletins.](https://www.mongodb.com/resources/products/alerts/?tck=docs)

Issues fixed:

- [SERVER-117395](https://jira.mongodb.org/browse/SERVER-117395) Avoid reading target node multiple times in $addToSet with arrays

- [SERVER-118763](https://jira.mongodb.org/browse/SERVER-118763) Add severity levels for checkMetadataConsistency command results

- [SERVER-128392](https://jira.mongodb.org/browse/SERVER-128392) Duplicate insert into a clustered collection whose \_id contains a Decimal128 throws a KeyString format error

- [SERVER-129460](https://jira.mongodb.org/browse/SERVER-129460) Ensure valid `jsonSchema` in time series updates

- [SERVER-129617](https://jira.mongodb.org/browse/SERVER-129617) Better validation for `NaN` in `$percentile` and `$median`

- [SERVER-129618](https://jira.mongodb.org/browse/SERVER-129618) Disallow user-provided `$vectorSearch` arguments from overriding internally generated options

- [SERVER-129994](https://jira.mongodb.org/browse/SERVER-129994) Fix a malformed `FlatBSON` store caused by inserting duplicate field names

- [SERVER-130110](https://jira.mongodb.org/browse/SERVER-130110) Gate the internal-only `_internalSetObjToThis` field of `$function` behind an internal-client check

- [SERVER-130111](https://jira.mongodb.org/browse/SERVER-130111) Prevent invalid type conversion during match expression serialization

- [SERVER-130117](https://jira.mongodb.org/browse/SERVER-130117) Fix a heap use-after-free in collection validation for big polygons

- [SERVER-130139](https://jira.mongodb.org/browse/SERVER-130139) Account for the `o`-versus-UUID consistency check

- [SERVER-130167](https://jira.mongodb.org/browse/SERVER-130167) Stop the JavaScript scope from constructing delete requests by concatenating unsanitized `_id` fields

- [SERVER-130188](https://jira.mongodb.org/browse/SERVER-130188) Exclude partial indexes from `2dsphere` geometry skip-validation

- [SERVER-130198](https://jira.mongodb.org/browse/SERVER-130198) Increase the authorization requirement for `slowms` and `sampleRate` in the `profile` command

- [SERVER-130247](https://jira.mongodb.org/browse/SERVER-130247) Treat `Decimal128` values as potentially invalid when preparing to yield or detach a cursor

- [SERVER-130264](https://jira.mongodb.org/browse/SERVER-130264) Apply the intra-cluster SASL mechanism allowlist in egress connection setup

- [SERVER-130266](https://jira.mongodb.org/browse/SERVER-130266) Prohibit `$text` and `$near` in `$_internalSchemaCond`

- [SERVER-130481](https://jira.mongodb.org/browse/SERVER-130481) Allow the symbol type in `CommandHelpers::parseNsFromCommand`

- [SERVER-130544](https://jira.mongodb.org/browse/SERVER-130544) Enforce the internal user for `commitTransaction` and `abortTransaction` on prepared transactions

- [SERVER-130628](https://jira.mongodb.org/browse/SERVER-130628) Prevent excessive range padding insertions into the ESC during FLE2 compaction

- [SERVER-130633](https://jira.mongodb.org/browse/SERVER-130633) Authorize `compactStructuredEncryptionData` and `cleanupStructuredEncryptionData` at database scope

- [All JIRA issues closed in 8.0.29](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.29%27)

- [8.0.29 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.29-changelog)

### 8.0.28 - July 22, 2026

This release contains important security and reliability improvements.

**Important:**

MongoDB 8.0.28 contains fixes for:

- [CVE-2026-9737](https://www.cve.org/CVERecord?id=CVE-2026-9737)

- [CVE-2026-13055](https://www.cve.org/CVERecord?id=CVE-2026-13055)

- [CVE-2026-13056](https://www.cve.org/CVERecord?id=CVE-2026-13056)

- [CVE-2026-13057](https://www.cve.org/CVERecord?id=CVE-2026-13057)

- [CVE-2026-13058](https://www.cve.org/CVERecord?id=CVE-2026-13058)

- [CVE-2026-13059](https://www.cve.org/CVERecord?id=CVE-2026-13059)

- [CVE-2026-13060](https://www.cve.org/CVERecord?id=CVE-2026-13060)

- [CVE-2026-13061](https://www.cve.org/CVERecord?id=CVE-2026-13061)

- [CVE-2026-13062](https://www.cve.org/CVERecord?id=CVE-2026-13062)

- [CVE-2026-13064](https://www.cve.org/CVERecord?id=CVE-2026-13064)

- [CVE-2026-13065](https://www.cve.org/CVERecord?id=CVE-2026-13065)

- [CVE-2026-13066](https://www.cve.org/CVERecord?id=CVE-2026-13066)

- [CVE-2026-13067](https://www.cve.org/CVERecord?id=CVE-2026-13067)

- [CVE-2026-13068](https://www.cve.org/CVERecord?id=CVE-2026-13068)

- [CVE-2026-13069](https://www.cve.org/CVERecord?id=CVE-2026-13069)

- [CVE-2026-13070](https://www.cve.org/CVERecord?id=CVE-2026-13070)

- [CVE-2026-13071](https://www.cve.org/CVERecord?id=CVE-2026-13071)

- [CVE-2026-13072](https://www.cve.org/CVERecord?id=CVE-2026-13072)

- [CVE-2026-13073](https://www.cve.org/CVERecord?id=CVE-2026-13073)

- [CVE-2026-13074](https://www.cve.org/CVERecord?id=CVE-2026-13074)

- [CVE-2026-13077](https://www.cve.org/CVERecord?id=CVE-2026-13077)

- [CVE-2026-13078](https://www.cve.org/CVERecord?id=CVE-2026-13078)

For the latest information about MongoDB security updates, see [MongoDB Security Bulletins.](https://www.mongodb.com/resources/products/alerts/?tck=docs)

Issues fixed:

- [SERVER-123081](https://jira.mongodb.org/browse/SERVER-123081) Handle compound wildcard index spec in `$_internalIndexKey`

- [SERVER-124355](https://jira.mongodb.org/browse/SERVER-124355) Improve memory checks for array expressions to prevent huge in-memory arrays from `$concatArrays` combined with `$range`

- [SERVER-125872](https://jira.mongodb.org/browse/SERVER-125872) Fix exponential hashing of query solutions for `InternalSchema*MatchExpression` nodes

- [SERVER-126247](https://jira.mongodb.org/browse/SERVER-126247) Properly validate `$search.mergingPipeline` as an internal-only field

- [SERVER-127280](https://jira.mongodb.org/browse/SERVER-127280) Reject expression-based `sortBy` in the `$linearFill` parser

- [SERVER-127357](https://jira.mongodb.org/browse/SERVER-127357) Check for duplicate `from` fields in `DocumentSourceGraphLookup::createFromBson()`

- [SERVER-127566](https://jira.mongodb.org/browse/SERVER-127566) Limit the contention factor that can be used for FLE2 fields

- [SERVER-127661](https://jira.mongodb.org/browse/SERVER-127661) Require `autocommit` when `startOrContinueTransaction` is specified

- [SERVER-127689](https://jira.mongodb.org/browse/SERVER-127689) Only allow internal clients to specify `$_internalPredicate`

- [SERVER-127694](https://jira.mongodb.org/browse/SERVER-127694) Add type checking for `DBPointer`

- [SERVER-127831](https://jira.mongodb.org/browse/SERVER-127831) Forbid external users from running FLE2 commands with `crudProcessed` set to true

- [SERVER-128198](https://jira.mongodb.org/browse/SERVER-128198) Fix `mongos` `killCursors` to check authorization against the cursor's namespace instead of the request namespace

- [SERVER-128341](https://jira.mongodb.org/browse/SERVER-128341) Fix a server crash caused by sorting on a `$meta` expression

- [SERVER-129103](https://jira.mongodb.org/browse/SERVER-129103) Restrict target BinData subtypes in $convert and $constant/$literal

- [SERVER-128362](https://jira.mongodb.org/browse/SERVER-128362) Add a null check on the return value in `ocspClientCallback`

- [SERVER-128387](https://jira.mongodb.org/browse/SERVER-128387) Remove auth role parsing from SSL TLVs in the proxy protocol parser

- [SERVER-128433](https://jira.mongodb.org/browse/SERVER-128433) Prevent external clients from setting `runtimeConstants.userRoles`

- [SERVER-128473](https://jira.mongodb.org/browse/SERVER-128473) Fix a use-after-free in `$function` caused by a missing `advanceGeneration()` call on retained BSON arguments

- [SERVER-128494](https://jira.mongodb.org/browse/SERVER-128494) Validate external BSON in `MultiBsonStreamCursor`

- [SERVER-128512](https://jira.mongodb.org/browse/SERVER-128512) Disable SBE tailable and resumed scans

- [SERVER-128517](https://jira.mongodb.org/browse/SERVER-128517) Add a configurable minimum timeout for pre-auth streamable `hello` to prevent a hot loop from very small `maxAwaitTimeMS` values

- [SERVER-128832](https://jira.mongodb.org/browse/SERVER-128832) Guard `ImplScope` `ModuleLoader` creation

- [SERVER-103955](https://jira.mongodb.org/browse/SERVER-103955) Index build race with commitQuorum and abort

- [SERVER-111411](https://jira.mongodb.org/browse/SERVER-111411) Resharding Does Not Properly Handle forceRedistribution With Time Series Collections

- [SERVER-111885](https://jira.mongodb.org/browse/SERVER-111885) Index Build Merging Spills conflicts with replSetGetStatus

- [SERVER-112273](https://jira.mongodb.org/browse/SERVER-112273) Killing an OplogWriter operation using killOp() results in a crash

- [SERVER-127346](https://jira.mongodb.org/browse/SERVER-127346) Make session refresh have kExempt admission priority

- [All JIRA issues closed in 8.0.28](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.28%27)

- [8.0.28 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.28-changelog)

### 8.0.26 - June 11, 2026

**Important:**

MongoDB 8.0.26 contains a fix for [CVE-2026-11933](https://www.cve.org/CVERecord?id=CVE-2026-11933)

For the latest information about MongoDB security updates, see [MongoDB Security Bulletins.](https://www.mongodb.com/resources/products/alerts/?tck=docs)

Issues fixed:

- [SERVER-128125](https://jira.mongodb.org/browse/SERVER-128125) Align bsonObjToArray ownership semantics with bsonGetImmutable

- [All JIRA issues closed in 8.0.26](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.26%27)

- [8.0.26 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.26-changelog)

### 8.0.25 - June 10, 2026

Issues fixed:

- [SERVER-127984](https://jira.mongodb.org/browse/SERVER-127984) Speed up isMetadataFieldName with compile-time field matching

- [8.0.25 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.25-changelog)

### 8.0.24 - June 9, 2026

**Important:**

MongoDB 8.0.24 contains a fix for:

- [CVE-2026-9740](https://www.cve.org/CVERecord?id=CVE-2026-9740)

- [CVE-2026-9741](https://www.cve.org/CVERecord?id=CVE-2026-9741)

- [CVE-2026-9743](https://www.cve.org/CVERecord?id=CVE-2026-9743)

- [CVE-2026-9746](https://www.cve.org/CVERecord?id=CVE-2026-9746)

- [CVE-2026-9747](https://www.cve.org/CVERecord?id=CVE-2026-9747)

- [CVE-2026-9748](https://www.cve.org/CVERecord?id=CVE-2026-9748)

- [CVE-2026-9749](https://www.cve.org/CVERecord?id=CVE-2026-9749)

- [CVE-2026-9750](https://www.cve.org/CVERecord?id=CVE-2026-9750)

- [CVE-2026-9751](https://www.cve.org/CVERecord?id=CVE-2026-9751)

- [CVE-2026-9752](https://www.cve.org/CVERecord?id=CVE-2026-9752)

- [CVE-2026-9753](https://www.cve.org/CVERecord?id=CVE-2026-9753)

For the latest information about MongoDB security updates, see [MongoDB Security Bulletins.](https://www.mongodb.com/resources/products/alerts/?tck=docs)

Issues fixed:

- [SERVER-106903](https://jira.mongodb.org/browse/SERVER-106903) Make QueryAnalysisCoordinator::onSamplerDelete less error prone

- [SERVER-107966](https://jira.mongodb.org/browse/SERVER-107966) A SingleServerPingMonitor within the RSM can get disabled and never reenabled

- [SERVER-115250](https://jira.mongodb.org/browse/SERVER-115250) Pause JWKSetRefreshJob during quiesce time

- [SERVER-121822](https://jira.mongodb.org/browse/SERVER-121822) Clustered collections do not correctly filter out results with $lt on \_id

- [SERVER-126049](https://jira.mongodb.org/browse/SERVER-126049) MozJS per-scope heap limit check uses process-global GC counter

- [SERVER-125063](https://jira.mongodb.org/browse/SERVER-125063) Prohibit nesting of BSONColumn inside BSONColumn

- [SERVER-123507](https://jira.mongodb.org/browse/SERVER-123507) Encrypted predicates inside a `$vectorSearch` prefilter should get replaced with encryption placeholders

- [SERVER-123688](https://jira.mongodb.org/browse/SERVER-123688) Add null check in `DocumentSourceSetVariableFromSubPipeline::reattachToOperationContext()`

- [SERVER-124190](https://jira.mongodb.org/browse/SERVER-124190) Forbid aggregate `exchange` field from non-internal clients

- [SERVER-123918](https://jira.mongodb.org/browse/SERVER-123918) Validate `runtimeConstants.userRoles` in IDL

- [SERVER-123951](https://jira.mongodb.org/browse/SERVER-123951) `$_internalConvertBucketIndexStats` should not return PauseExecution on failed index conversion

- [SERVER-124031](https://jira.mongodb.org/browse/SERVER-124031) Ensure `Exchange::getTargetConsumer` correctly handles MaxKey

- [SERVER-123633](https://jira.mongodb.org/browse/SERVER-123633) Fix handling of user $-prefixed fields colliding with internal metadata

- [SERVER-123370](https://jira.mongodb.org/browse/SERVER-123370) LDAP query password is logged when set through setParameter

- [SERVER-123440](https://jira.mongodb.org/browse/SERVER-123440) GeometryCollection with strict-winding polygon causes 2dsphere index key generation crash

- [SERVER-124959](https://jira.mongodb.org/browse/SERVER-124959) Validate doc diff array bounds and `$_internalApplyOplogUpdate` BSON

- [All JIRA issues closed in 8.0.24](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.24%27)

- [8.0.24 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.24-changelog)

### 8.0.23 - May 12, 2026

**Important:**

MongoDB 8.0.23 contains a fix for:

- [CVE-2026-8053](https://www.cve.org/CVERecord?id=CVE-2026-8053)

- [CVE-2026-8199](https://www.cve.org/CVERecord?id=CVE-2026-8199)

- [CVE-2026-8200](https://www.cve.org/CVERecord?id=CVE-2026-8200)

- [CVE-2026-8201](https://www.cve.org/CVERecord?id=CVE-2026-8201)

- [CVE-2026-8202](https://www.cve.org/CVERecord?id=CVE-2026-8202)

For the latest information about MongoDB security updates, see [MongoDB Security Bulletins.](https://www.mongodb.com/resources/products/alerts/?tck=docs)

Issues fixed:

- [SERVER-120668](https://jira.mongodb.org/browse/SERVER-120668) Disallow `$trim` with too large mask string

- [SERVER-121895](https://jira.mongodb.org/browse/SERVER-121895) Improve redaction of validation errors

- [SERVER-122032](https://jira.mongodb.org/browse/SERVER-122032) Calling `replaceEncryptedFieldsInFilter` with positional projection results in use-after-free

- [SERVER-122449](https://jira.mongodb.org/browse/SERVER-122449) Improve `$bitSet` match expressions

- [SERVER-126021](https://jira.mongodb.org/browse/SERVER-126021) Undefined behavior when inserting data with duplicate field names into timeseries collections

- [All JIRA issues closed in 8.0.23](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.23%27)

- [8.0.23 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.23-changelog)

### 8.0.21 - Apr 29, 2026

**Important:**

MongoDB 8.0.21 contains a fix for:

- [CVE-2026-6914](https://www.cve.org/CVERecord?id=CVE-2026-6914)

- [CVE-2026-6915](https://www.cve.org/CVERecord?id=CVE-2026-6915)

For the latest information about MongoDB security updates, see [MongoDB Security Bulletins.](https://www.mongodb.com/resources/products/alerts/?tck=docs)

Issues fixed:

- [SERVER-119679](https://jira.mongodb.org/browse/SERVER-119679) Missing Authorization Check in updateUser

- [SERVER-119981](https://jira.mongodb.org/browse/SERVER-119981) Fix binDataClean() for deprecated type

- [SERVER-86326](https://jira.mongodb.org/browse/SERVER-86326): Increase max regex pattern length to 32k

- [SERVER-104438](https://jira.mongodb.org/browse/SERVER-104438): Reclaiming oplog may block stepup/stepdown

- [SERVER-111007](https://jira.mongodb.org/browse/SERVER-111007): Validation should distinguish between root causes when finding mixed schema data

- [SERVER-118466](https://jira.mongodb.org/browse/SERVER-118466): Prevent the TTL Monitor from spawning an unbounded amount of threads for sharding metadata recovery

- [SERVER-118546](https://jira.mongodb.org/browse/SERVER-118546): Can not create timeseries 2dsphere index with a non-system user

- [All JIRA issues closed in 8.0.21](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.21%27)

- [8.0.21 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.21-changelog)

### 8.0.20 - Mar 17, 2026

**Important:**

MongoDB 8.0.20 contains a fix for:

- [CVE-2026-4147](https://www.cve.org/CVERecord?id=CVE-2026-4147)

- [CVE-2026-4148](https://www.cve.org/CVERecord?id=CVE-2026-4148)

For the latest information about MongoDB security updates, see [MongoDB Security Bulletins.](https://www.mongodb.com/resources/products/alerts/?tck=docs)

- [SERVER-105047](https://jira.mongodb.org/browse/SERVER-105047): Query using [`$or`](https://www.mongodb.com/docs/manual/reference/operator/query/or.md#mongodb-query-op.-or) and [`$ne`](https://www.mongodb.com/docs/manual/reference/operator/query/ne.md#mongodb-query-op.-ne) on sharded collection can include orphan documents

- [SERVER-110423](https://jira.mongodb.org/browse/SERVER-110423): [`$group`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/group.md#mongodb-pipeline-pipe.-group) can use a distinct scan on a sparse index, which hides null/missing results

- [SERVER-110803](https://jira.mongodb.org/browse/SERVER-110803): [`$top`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/top.md#mongodb-group-grp.-top) and [`$bottom`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottom.md#mongodb-group-grp.-bottom) ignore `sortBy` clause when preceding [`$sort`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/sort.md#mongodb-pipeline-pipe.-sort) stage makes it eligible for `DISTINCT_SCAN` optimization

- [SERVER-110832](https://jira.mongodb.org/browse/SERVER-110832): OplogWriter should not hold on to session through rollbacks

- [SERVER-110916](https://jira.mongodb.org/browse/SERVER-110916): Use-after-move in `targetShardsAndAddMergeCursors()`

- [SERVER-113319](https://jira.mongodb.org/browse/SERVER-113319): [`$match`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/match.md#mongodb-pipeline-pipe.-match) pushdown past a renamed field is done incorrectly when the expression root is a renamed field path expression

- [SERVER-115962](https://jira.mongodb.org/browse/SERVER-115962): Balancer does not make progress when the most loaded shard is already balanced within its zones

- [SERVER-118428](https://jira.mongodb.org/browse/SERVER-118428): `mongocryptd` rejects large messages

- [SERVER-119317](https://jira.mongodb.org/browse/SERVER-119317): Improve object lifecycle of MD5 hash state

- [SERVER-119319](https://jira.mongodb.org/browse/SERVER-119319): Fix ExpressionContext use-after-free bug

- [WT-14034](https://jira.mongodb.org/browse/WT-14034): Fix resolving the prepared key multiple times because of reserved updates

- [All JIRA issues closed in 8.0.20](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.20%27)

- [8.0.20 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.20-changelog)

### 8.0.19 - Feb 10, 2026

- [SERVER-118712](https://jira.mongodb.org/browse/SERVER-118712) - Can not create timeseries 2dsphere index with a non-system user

- [All JIRA issues closed in 8.0.19](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.19%27)

- [8.0.19 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.19-changelog)

### 8.0.18 - Jan 27, 2026

**Important:**

MongoDB 8.0.18 contains a fix for:

- [CVE-2026-1847](https://www.cve.org/CVERecord?id=CVE-2026-1847)

- [CVE-2026-1848](https://www.cve.org/CVERecord?id=CVE-2026-1848)

- [CVE-2026-1849](https://www.cve.org/CVERecord?id=CVE-2026-1849)

- [CVE-2026-1850](https://www.cve.org/CVERecord?id=CVE-2026-1850)

- [CVE-2026-25609](https://www.cve.org/CVERecord?id=CVE-2026-25609)

- [CVE-2026-25611](https://www.cve.org/CVERecord?id=CVE-2026-25611)

- [CVE-2026-25612](https://www.cve.org/CVERecord?id=CVE-2026-25612)

- [CVE-2026-25613](https://www.cve.org/CVERecord?id=CVE-2026-25613)

For the latest information about MongoDB security updates, see [MongoDB Security Bulletins.](https://www.mongodb.com/resources/products/alerts/?tck=docs)

Issues fixed:

- [SERVER-102364](https://jira.mongodb.org/browse/SERVER-102364) - Periodically check $reduce accumulated depth less than maxAllowableBSONDepth

- [SERVER-103774](https://jira.mongodb.org/browse/SERVER-103774) - Disallow compound wildcard indexes from being used as a shard key index

- [SERVER-110953](https://jira.mongodb.org/browse/SERVER-110953) - Check no orphaned document is present on a recipient shard before starting cloning a range

- [SERVER-112952](https://jira.mongodb.org/browse/SERVER-112952) - tighten profile command auth check

- [SERVER-113532](https://jira.mongodb.org/browse/SERVER-113532) - \[8.0] Introduce a new CursorResponseBsonSize limit of 16MB+32KB

- [SERVER-113685](https://jira.mongodb.org/browse/SERVER-113685) - Segfault for query on compound wildcard index

- [SERVER-114126](https://jira.mongodb.org/browse/SERVER-114126) - Reduce memory usage and add new guardrails to the boolean simplifier

- [SERVER-114695](https://jira.mongodb.org/browse/SERVER-114695) - Update default value for pending connections

- [SERVER-114838](https://jira.mongodb.org/browse/SERVER-114838) - Lock Manager is susceptible to an adversarial DDOS attack

- [SERVER-115296](https://jira.mongodb.org/browse/SERVER-115296) - Redact ResourceId raw values from error messages

- [SERVER-116206](https://jira.mongodb.org/browse/SERVER-116206) - Better exception handling for message compressors

- [SERVER-116210](https://jira.mongodb.org/browse/SERVER-116210) - Adjust the maximum buffer size for ingress requests

- [SERVER-116211](https://jira.mongodb.org/browse/SERVER-116211) - Cap memory allocated by network buffers

- [All JIRA issues closed in 8.0.18](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.18%27)

- [8.0.18 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.18-changelog)

### 8.0.17 - Dec 19, 2025

**Important:**

MongoDB 8.0.17 contains a fix for [CVE-2025-14847](https://www.cve.org/CVERecord?id=CVE-2025-14847).

For the latest information about MongoDB security updates, see [MongoDB Security Bulletins.](https://www.mongodb.com/resources/products/alerts/?tck=docs)

Issues fixed:

- [SERVER-115508](https://jira.mongodb.org/browse/SERVER-115508): Make minimally sized buffers for uncompressed Messages

- [8.0.17 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.17-changelog)

### 8.0.16 - Nov 19, 2025

**Important:**

MongoDB 8.0.16 includes fixes for [CVE-2025-12893](https://www.cve.org/CVERecord?id=CVE-2025-12893), [CVE-2025-13507](https://www.cve.org/CVERecord?id=CVE-2025-13507), and [CVE-2025-14345](https://www.cve.org/CVERecord?id=CVE-2025-14345).

For the latest information about MongoDB security updates, see [MongoDB Security Bulletins.](https://www.mongodb.com/resources/products/alerts/?tck=docs)

Issues fixed:

- [SERVER-82688](https://jira.mongodb.org/browse/SERVER-82688): Fixes a bug that caused `mongod` to crash, when the number of connections exceeded WiredTiger's `session_max` limit

- [SERVER-95374](https://jira.mongodb.org/browse/SERVER-95374): Resolves an issue where compound wildcard indexes could push predicates down incorrectly during union or query planning

- [SERVER-103960](https://jira.mongodb.org/browse/SERVER-103960): Implements a proper validation check to the field path to ensure the number of parts does not exceed `255`

- [SERVER-108565](https://jira.mongodb.org/browse/SERVER-108565): Improve handling of oversized writes to time series collections.

- [SERVER-112467](https://jira.mongodb.org/browse/SERVER-112467): Improves tracking and reporting of the number of pending proxy connections

- [SERVER-112520](https://jira.mongodb.org/browse/SERVER-112520): Fixes a failure to write to a geo index when inserting a document into an existing bucket in a time series collection

- [WT-9575](https://jira.mongodb.org/browse/WT-9575): Fixes an issue where pages with updates newer than the oldest transaction ID were not queued for eviction

- [WT-15225](https://jira.mongodb.org/browse/WT-15225): Fixes an `EBUSY` issue for newly created tables and `drop()` operations

- [All JIRA issues closed in 8.0.16](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.16%27)

- [8.0.16 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.16-changelog)

### 8.0.15 - Oct 2, 2025

**Important:**

Use-after-free in the MongoDB server query planner may lead to a crash or undefined behavior.

Description: an authorized user may crash the MongoDB server by causing a buffer over-read. This can occur when running a DDL operation while the queries run.

CVSS Score: 5.3

CWE: 416 Use After Free

Affected product versions: MongoDB Server 8.2.0, 8.0.14 to 8.0, 7.0.24 to 7.0, and earlier end-of-life major versions.

Issues fixed:

- [SERVER-105873](https://jira.mongodb.org/browse/SERVER-105873): QueryPlannerParams should not maintain pointers owned by IndexCatalogEntry

- [All JIRA issues closed in 8.0.15](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.15%27)

- [8.0.15 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.15-changelog)

### 8.0.14 - Sep 25, 2025

**Important:**

MongoDB 8.0.14 includes a fix for [CVE-2025-13643](https://www.cve.org/CVERecord?id=CVE-2025-13643).

For the latest information about MongoDB security updates, see [MongoDB Security Bulletins.](https://www.mongodb.com/resources/products/alerts/?tck=docs)

Issues fixed:

- [SERVER-100448](https://jira.mongodb.org/browse/SERVER-100448): Command registration should not depend on the FCV at startup

- [SERVER-103742](https://jira.mongodb.org/browse/SERVER-103742): opWriteConcernCounters can illegally embed a NUL bytes into ServerStatus

- [SERVER-103841](https://jira.mongodb.org/browse/SERVER-103841): Memory leak in TransactionCoordinator associated to long-lived cancellation source

- [SERVER-105478](https://jira.mongodb.org/browse/SERVER-105478): Separate eligible and ineligible oplog entries for the applier with secondaryDelaySecs

- [WT-14140](https://jira.mongodb.org/browse/WT-14140): Unnecessary schema lock taken for active "file:" dhandles that are not swept

- [WT-14653](https://jira.mongodb.org/browse/WT-14653): Add logs/stats to reconciliation for tracking HS updates

- [All JIRA issues closed in 8.0.14](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.14%27)

- [8.0.14 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.14-changelog)

### 8.0.13 - Aug 21, 2025

**Important:**

MongoDB 8.0.13 includes a fix for [CVE-2025-13644](https://www.cve.org/CVERecord?id=CVE-2025-13644).

For the latest information about MongoDB security updates, see [MongoDB Security Bulletins.](https://www.mongodb.com/resources/products/alerts/?tck=docs)

Issues fixed:

- [SERVER-77172](https://jira.mongodb.org/browse/SERVER-77172): `abortExpiredTransactions` thread can get stuck if it fails to checkout a session

- [SERVER-82180](https://jira.mongodb.org/browse/SERVER-82180): Capped inserts on the primary can have a different natural ordering from secondaries

- [SERVER-91686](https://jira.mongodb.org/browse/SERVER-91686): Improve `mongod` signal handler to print out current thread's command object

- [SERVER-94315](https://jira.mongodb.org/browse/SERVER-94315): Shard filtering bug with collation

- [SERVER-102670](https://jira.mongodb.org/browse/SERVER-102670): Incorrect ordered time-series insert error handling

- [SERVER-107361](https://jira.mongodb.org/browse/SERVER-107361): Rollover determination in the bucket catalog can fail to check mixed schema for large measurements

- [All JIRA issues closed in 8.0.13](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.13%27)

- [8.0.13 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.13-changelog)

Compatibility changes:

- [SERVER-103927](https://jira.mongodb.org/browse/SERVER-103927): Changes how the server gets built by using Bazel instead of SCons

### 8.0.12 - July 23, 2025

**Important:**

Due to CVE-2025-10061, in MongoDB 8.0 and 8.0.1, an authorized user can cause a crash in the MongoDB Server through a specially crafted $group query. This vulnerability is related to the incorrect handling of certain accumulator functions when additional parameters are specified within the $group operation. This vulnerability could lead to denial of service if triggered repeatedly.

This issue affects the following MongoDB Server versions:

- 8.1.0 - 8.1.1

- 8.0.0 - 8.0.11

- 7.0.0 - 7.0.21

- 6.0.0 - 6.0.24

**CVSS Score**: 6.5

**CWE**: CWE-20 Improper Input Validation

**Note:**

In MongoDB 8.0.12 - 8.0.x, `mongod` logs a startup warning when you set the `disableJavaScriptJIT` parameter. For security purposes, MongoDB disables the JavaScript just-in-time compiler and recommends leaving it disabled.

Issues fixed:

- [SERVER-95523](https://jira.mongodb.org/browse/SERVER-95523): upsert does not handle DuplicateKey retry correctly

- [SERVER-95524](https://jira.mongodb.org/browse/SERVER-95524): Avoid retrying on duplicate key error for upserts in multidocument transactions

- [SERVER-97368](https://jira.mongodb.org/browse/SERVER-97368): Enable TTL deletes on time-series collections containing data prior to 1970

- [SERVER-99342](https://jira.mongodb.org/browse/SERVER-99342): Throughput probing decrease metrics are not being updated

- [SERVER-99616](https://jira.mongodb.org/browse/SERVER-99616) $group can hit MONGO\_verify

- [WT-14391](https://jira.mongodb.org/browse/WT-14391): Check eviction server is running before opening HS

- [All JIRA issues closed in 8.0.12](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.12%27)

- [8.0.12 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.12-changelog)

### 8.0.11 - Jun 30, 2025

Issues fixed:

- [SERVER-105375](https://jira.mongodb.org/browse/SERVER-105375): Use EOF plan for alwaysFalse expressions within elemMatch

- [SERVER-106614](https://jira.mongodb.org/browse/SERVER-106614): List of replica set hosts in config.shards entries not updated for shards added prior to 8.0

- [All JIRA issues closed in 8.0.11](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.11%27)

- [8.0.11 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.11-changelog)

### 8.0.10 - Jun 04, 2025

**Important: Malformed KMIP response may result in read access violation**

Due to CVE-2025-12657, in MongoDB 8.0 and 8.0.1, the KMIP response parser built into `mongo` binaries is overly tolerant of certain malformed packets, and may parse them into invalid objects. Later reads of this object can result in read access violations.

This issue affects the following MongoDB Server versions:

- 8.0.0 - 8.0.9

- 7.0.0 - 7.0.21

**CVSS Score**: 5.9

**CWE**: CWE-754: Improper Check for Unusual or Exceptional Conditions

Issues fixed:

- [SERVER-101230](https://jira.mongodb.org/browse/SERVER-101230): Coverity analysis defect 155126: Using invalid iterator

- [SERVER-90495](https://jira.mongodb.org/browse/SERVER-90495): Support start or resume from deleted recordId on natural order scan

- [SERVER-92806](https://jira.mongodb.org/browse/SERVER-92806): Plan cache entry ignores index collation with $elemMatch

- [SERVER-96197](https://jira.mongodb.org/browse/SERVER-96197): ExpressionContext's \_resolvedNamespaces can't distinguish between collections with the same name in different dbs

- [SERVER-100785](https://jira.mongodb.org/browse/SERVER-100785): Fatal crash of mongodb config server after issuing malformed reshardCollection command

- [WT-13216](https://jira.mongodb.org/browse/WT-13216): Assess the use of cache eviction check in compact

- [All JIRA issues closed in 8.0.10](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.10%27)

- [8.0.10 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.10-changelog)

### 8.0.9 - May 1, 2025

**Important: Fix for incorrect handling of incomplete data may prevent mongos from accepting new connections**

Due to CVE-2025-6714, in MongoDB 8.0 and 8.0.1,  MongoDB Server's [`mongos`](https://www.mongodb.com/docs/manual/reference/program/mongos.md#mongodb-binary-bin.mongos) component can become unresponsive to new connections due to incorrect handling of incomplete data. This issue affects sharded MongoDB clusters that are configured with load balancer support for `mongos` using `HAProxy` on specified ports.

This issue affects the following MongoDB Server versions:

- 8.0.0 - 8.0.8

- 7.0.0 - 7.0.19

- 6.0.0 - 6.0.22

**CVSS Score**: 7.5

**CWE**: CWE-834 Excessive Iteration AND CWE-400 Uncontrolled Resource Consumption

Issues fixed:

- [SERVER-92236](https://jira.mongodb.org/browse/SERVER-92236): Chunk migrations should use short lived cancellation sources

- [SERVER-106753](https://jira.mongodb.org/browse/SERVER-106753): Incorrect handling of incomplete data may prevent `mongos` from accepting new connections

- [All JIRA issues closed in 8.0.9](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.9%27)

- [8.0.9 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.9-changelog)

### 8.0.8 - Apr 14, 2025

Issues fixed:

- [SERVER-103328](https://jira.mongodb.org/browse/SERVER-103328) Incorrect BSONColumn handling of skip after non-zero RLE for double type

- [All Jira issues closed in 8.0.8](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.8%27)

- [8.0.8 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.8-changelog)

### 8.0.7 - Apr 14, 2025

**Important: MongoDB Server may be susceptible to privilege escalation due to $mergeCursors stage**

Due to CVE-2025-6713, in MongoDB 8.0 and 8.0.1, an unauthorized user may leverage a specially crafted aggregation pipeline to access data without proper authorization due to improper handling of the `$mergeCursors` stage in MongoDB Server. This may lead to access to data without further authorization.

This issue affects the following MongoDB Server versions:

- 8.0.0 - 8.0.6

- 7.0.0 - 7.0.18

- 6.0.0 - 6.0.21

**CVSS Score**: 7.7

**CWE**: CWE-285: Improper Authorization

Issues fixed:

- [SERVER-106752](https://jira.mongodb.org/browse/SERVER-106752) MongoDB Server may be susceptible to privilege escalation due to `$mergeCursors` stage

### 8.0.6 - Mar 19, 2025

Issues fixed:

- [SERVER-87442](https://jira.mongodb.org/browse/SERVER-87442) Platform Support: Add support for Macos 14 sonoma (ARM64 and AMD64)

- [SERVER-89757](https://jira.mongodb.org/browse/SERVER-89757) checkSbeStatus should check for all nodes

- [SERVER-97911](https://jira.mongodb.org/browse/SERVER-97911) Query with "\_id in empty array" traverses the full collection when given the \_id index as a hint

- [SERVER-100901](https://jira.mongodb.org/browse/SERVER-100901) Relax user digest invariant to tassert in ShardingTaskExecutor

- [SERVER-101838](https://jira.mongodb.org/browse/SERVER-101838) Revert [SERVER-93101](https://jira.mongodb.org/browse/SERVER-93101) + [SERVER-91121](https://jira.mongodb.org/browse/SERVER-91121)

- [All Jira issues closed in 8.0.6](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.6%27)

- [8.0.6 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.6-changelog)

### 8.0.5 - Feb 20, 2025

**Important: Pre-Authentication Denial of Service Vulnerability in MongoDB Server's OIDC Authentication**

Due to CVE-2025-6709, in MongoDB 8.0 and 8.0.1, MongoDB Server is susceptible to a denial of service vulnerability due to improper handling of specific date values in JSON input when using OIDC authentication. This can be reproduced using the mongo shell to send a malicious JSON payload leading to an invariant failure and server crash.

This issue affects the following MongoDB Server versions:

- 8.0.0 - 8.0.4

- 7.0.0 - 7.0.16

The same issue affects MongoDB Server v6.0, but an attacker can only induce denial of service after authenticating. This issue affects the following MongoDB Server versions:

- 6.0.0 - 6.0.20

**CVSS Score**: 7.5

**CWE**: CWE-20: Improper Input Validation

**Important: Pre-authentication Denial of Service Stack Overflow Vulnerability in JSON Parsing via Excessive Recursion in MongoDB**

Due to CVE-2025-6710, in MongoDB 8.0 and 8.0.1, MongoDB Server may be susceptible to stack overflow due to JSON parsing mechanism, where specifically crafted JSON inputs may induce unwarranted levels of recursion, resulting in excessive stack space consumption. Such inputs can lead to a stack overflow that causes the server to crash which could occur pre-authorisation.

This issue affects the following MongoDB Server versions:

- 8.0.0 - 8.0.4

- 7.0.0 - 7.0.16

The same issue affects MongoDB Server v6.0, but an attacker can only induce denial of service after authenticating. This issue affects the following MongoDB Server versions:

- 6.0.0 - 6.0.20

**CVSS Score**: 7.5

**CWE**: CWE-674: Uncontrolled Recursion

Issues fixed:

- [SERVER-51366](https://jira.mongodb.org/browse/SERVER-51366) Configure folders created by installer

- [SERVER-93497](https://jira.mongodb.org/browse/SERVER-93497) Move user cache invalidation from OpObserver to onCommit handlers

- [SERVER-95672](https://jira.mongodb.org/browse/SERVER-95672) Indexes on array fields that contain subarrays do not include some results

- [SERVER-97044](https://jira.mongodb.org/browse/SERVER-97044) Fix an issue where change streams might incorrectly output a "drop" event during resharding or unsharding of a collection that is or was using zone sharding

- [SERVER-97860](https://jira.mongodb.org/browse/SERVER-97860) Express path can return incorrect results when scanning a unique, multi-field index

- [SERVER-99290](https://jira.mongodb.org/browse/SERVER-99290) Invalid timeseries buckets collections prevent completion of FCV 8.0 upgrade

- [SERVER-99345](https://jira.mongodb.org/browse/SERVER-99345) Prevent sharding/moving a time-series buckets collection without the 'timeseries' options on FCV 8.0+

- [SERVER-106748](https://jira.mongodb.org/browse/SERVER-106748) Pre-auth denial of service when accepting OIDC authentication

- [SERVER-106749](https://jira.mongodb.org/browse/SERVER-106749) Pre-authentication Denial of Service Stack Overflow Vulnerability in JSON Parsing via Excessive Recursion in MongoDB

- [WT-12846](https://jira.mongodb.org/browse/WT-12846) Fix how compact walk handles EBUSY from checkpoint flush\_lock

- [All Jira issues closed in 8.0.5](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D%278.0.5%27)

- [8.0.5 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.5-changelog)

### 8.0.4 - Dec 9, 2024

- [SERVER-73641](https://jira.mongodb.org/browse/SERVER-73641) Time series filtering can miss extended-range events when sharded

- [SERVER-82037](https://jira.mongodb.org/browse/SERVER-82037) Memory used by sorter spills can grow without bound

- [SERVER-94559](https://jira.mongodb.org/browse/SERVER-94559) Time series measurement deletes update the minTime of a bucket

- [SERVER-95067](https://jira.mongodb.org/browse/SERVER-95067) Time series inserts can generate multiple batches referencing the same bucket

- [SERVER-95724](https://jira.mongodb.org/browse/SERVER-95724) ReshardingOplogSessionApplication clones retryable applyOps session info with admin.$cmd as affectedNamespace

- [All Jira issues closed in 8.0.4](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D8.0.4)

- [8.0.4 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.4-changelog)

### 8.0.3 - Oct 24, 2024

**Important: Improper neutralization of null bytes may lead to buffer over-reads in MongoDB Server**

In MongoDB 8.0 and 8.0.1, an authorized user may trigger crashes or receive the contents of buffer over-reads of Server memory by issuing specially crafted requests that construct malformed BSON in the MongoDB Server.

This issue affects MongoDB Server versions:

- 5.0.0 - 5.0.29

- 6.0.0 - 6.0.18

- 7.0.0 - 7.0.14

- 8.0.0 - 8.0.1

Issues fixed:

- [SERVER-96419](https://jira.mongodb.org/browse/SERVER-96419) Improper neutralization of null bytes may lead to buffer over-reads in MongoDB Server

- [All Jira issues closed in 8.0.3](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%20in%20\(8.0.2,%208.0.3\))

- [8.0.3 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.3-changelog)

### 8.0.1 - Oct 9, 2024

Issues fixed:

- [SERVER-76883](https://jira.mongodb.org/browse/SERVER-76883) Reduce chattiness of "Role does not exist" logs for externally sourced users

- [SERVER-82221](https://jira.mongodb.org/browse/SERVER-82221) listCollections and listIndexes should include commit-pending namespaces

- [SERVER-94635](https://jira.mongodb.org/browse/SERVER-94635) Make session refresh parameters configurable

- [SERVER-95244](https://jira.mongodb.org/browse/SERVER-95244) Upsert statements which result in an insert may fail with tassert 9146500 when client connects directly to shard

- [WT-13409](https://jira.mongodb.org/browse/WT-13409) One ret in \_\_txn\_checkpoint is not handled

- [All Jira issues closed in 8.0.1](https://jira.mongodb.org/issues/?jql=project%20in%20\(SERVER%2CTOOLS%2CWT\)%20AND%20resolution%3D%27Fixed%27%20and%20fixversion%3D8.0.1)

- [8.0.1 Changelog](https://www.mongodb.com/docs/manual/release-notes/8.0-changelog.md#std-label-8.0.1-changelog)

### 8.0.0 - Oct 2, 2024

## Known Issues

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

| In Version | Issue | Status |
| --- | --- | --- |
| 8.0.18, 8.0.19 | [SERVER-118428](https://jira.mongodb.org/browse/SERVER-118428): Changes to `mongocryptd` limit the maximum size of messages that `mongocryptd` can receive to 16 KiB. Users may encounter this issue when they send commands larger than 16 KiB through automatic Client-Side Field Level Encryption (CSFLE) or Queryable Encryption. To avoid this bug, skip these versions when you upgrade `mongocryptd` or use the [crypt_shared library](https://www.mongodb.com/docs/manual/core/queryable-encryption/install-library.md#std-label-qe-reference-shared-library). | Unresolved. |

## Performance Improvements

MongoDB 8.0 introduces significant performance improvements from MongoDB 7.0, including, but not limited to:

- Up to 36% better read throughput.

- Up to 32% better performance for typical web applications.

- Up to 20% faster concurrent writes during replication.

**Note:**

The amount of performance improvement can vary depending on the configuration of your workloads and database instances.

**See also:**

[MongoDB 8.0: Raising the Bar](https://www.mongodb.com/blog/post/mongodb-8-0-raising-the-bar)

### New Bulk Write Command

Starting in MongoDB 8.0, you can use the new [`bulkWrite`](https://www.mongodb.com/docs/manual/reference/command/bulkwrite.md#mongodb-dbcommand-dbcmd.bulkWrite) command to perform many insert, update, and delete operations on multiple collections in one request. The existing [`db.collection.bulkWrite()`](https://www.mongodb.com/docs/manual/reference/method/db.collection.bulkwrite.md#mongodb-method-db.collection.bulkWrite) method only allows you to modify one collection in one request.

`bulkWrite` operations on MongoDB 8.0 can run up to 56% faster than bulk write operations on MongoDB 7.0.

### Time Series Block Processing

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.

Compared to time series queries run on MongoDB 7.0 or earlier, block processing for time series data in MongoDB 8.0 may handle higher volumes of data and improve throughput in some cases by more than 200% for [`$group`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/group.md#mongodb-pipeline-pipe.-group) operations and analytical queries.

To see if your time series query uses block processing, check the [`explain.queryPlanner.winningPlan.slotBasedPlan.stages`](https://www.mongodb.com/docs/manual/reference/explain-results.md#mongodb-data-explain.queryPlanner.winningPlan.slotBasedPlan.stages) field in the explain plan output.

To learn more, see [Block Processing.](https://www.mongodb.com/docs/manual/core/timeseries/timeseries-querying.md#std-label-timeseries-querying-block-processing)

## Platform Support Updates

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](https://www.mongodb.com/blog/post/announcing-mongodb-server-8-0-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

## Logging

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](https://www.mongodb.com/docs/manual/reference/log-messages.md#std-label-log-message-json-examples-slow-op) 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()`.](https://www.mongodb.com/docs/manual/reference/method/db.setprofilinglevel.md#mongodb-method-db.setProfilingLevel)

### Database Profiler

When you specify a [filter](https://www.mongodb.com/docs/manual/reference/method/db.setprofilinglevel.md#std-label-set-profiling-level-options-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.

## Aggregation

### BinData Conversion

Starting in MongoDB 8.0, you can use the [`$convert`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/convert.md#mongodb-expression-exp.-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`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/touuid.md#mongodb-expression-exp.-toUUID), which provides simplified syntax for converting strings to UUID (Universally unique identifier) values.

### $queryStats

Starting in MongoDB 7.1, the [`$queryStats`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/querystats.md#mongodb-pipeline-pipe.-queryStats) stage returns statistics for recorded queries.

#### Change Stream Improvements

Starting in MongoDB 8.0, [`$queryStats`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/querystats.md#mongodb-pipeline-pipe.-queryStats) improves tracking and reporting metrics for change streams. For more information, see [$queryStats Change Streams Behavior.](https://www.mongodb.com/docs/manual/reference/operator/aggregation/querystats.md#std-label-queryStats-change-stream-behavior)

### $rank and $denseRank Behavior

Starting in MongoDB 8.0, `null` and missing field values in [`$denseRank`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/denserank.md#mongodb-group-grp.-denseRank) and [`$rank`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/rank.md#mongodb-group-grp.-rank) [sortBy](https://www.mongodb.com/docs/manual/reference/operator/aggregation/setwindowfields.md#std-label-setWindowFields-sortBy) operations are treated the same when calculating rankings. This change makes the behavior of `denseRank` and `rank` consistent with [`$sort`.](https://www.mongodb.com/docs/manual/reference/operator/aggregation/sort.md#mongodb-pipeline-pipe.-sort)

## Security

### Queryable Encryption Range Queries

Starting in MongoDB 8.0, [Queryable Encryption](https://www.mongodb.com/docs/manual/core/queryable-encryption.md#std-label-qe-manual-feature-qe) supports range queries on encrypted fields using the [`$lt`](https://www.mongodb.com/docs/manual/reference/operator/query/lt.md#mongodb-query-op.-lt), [`$lte`](https://www.mongodb.com/docs/manual/reference/operator/query/lte.md#mongodb-query-op.-lte), [`$gt`](https://www.mongodb.com/docs/manual/reference/operator/query/gt.md#mongodb-query-op.-gt), and [`$gte`](https://www.mongodb.com/docs/manual/reference/operator/query/gte.md#mongodb-query-op.-gte) operators. For details, see [Supported Operations for Queryable Encryption](https://www.mongodb.com/docs/manual/core/queryable-encryption/reference/supported-operations.md#std-label-qe-reference-automatic-encryption-supported-operations). To enable range queries on encrypted fields, see [Create an Encryption Schema.](https://www.mongodb.com/docs/manual/core/queryable-encryption/qe-create-encryption-schema.md#std-label-qe-create-encryption-schema)

### OCSF Schema for Log Messages

Starting in MongoDB 8.0, you can specify the OCSF (Open Cybersecurity Schema Framework) 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`](https://www.mongodb.com/docs/manual/reference/configuration-options.md#mongodb-setting-auditLog.schema) configuration file option.

For example log messages in OCSF format, see [OCSF Schema Audit Messages.](https://www.mongodb.com/docs/manual/reference/audit-message/ocsf.md#std-label-event-audit-messages-ocsf)

### Ingress Queue

MongoDB 8.0 introduces a new queue for ingress admission control. Operations that wait for entry into the database from the network enter the ingress queue. By default, the queue is unrestricted, meaning that MongoDB allows all operations to execute through this stage without any queueing. Setting the queue maximum to a specific value allows you to queue operations at this stage if the number of concurrent operations reaches the specified limit.

## Sharding

Starting in MongoDB 8.0, you can unshard collections and move unsharded collections between shards on sharded clusters.

### Moving a Collection

Starting in MongoDB 8.0, you can move an unsharded collection to a different shard using the [`moveCollection`](https://www.mongodb.com/docs/manual/reference/command/movecollection.md#mongodb-dbcommand-dbcmd.moveCollection) command.

For details, see [Moveable Collections](https://www.mongodb.com/docs/manual/core/moveable-collections.md#std-label-moveable-collections). To get started, see [Move a Collection.](https://www.mongodb.com/docs/manual/tutorial/move-a-collection.md#std-label-task-move-a-collection)

#### Moving Collections that have Change Streams

Starting in MongoDB 8.0, `movePrimary` doesn't [invalidate Event](https://www.mongodb.com/docs/manual/reference/change-events/invalidate.md#std-label-change-event-invalidate) collections that have [change streams](https://www.mongodb.com/docs/manual/changestreams.md#std-label-changeStreams). The change streams can continue to read events from collections after the collections are moved to a new shard.

For details, see [Change Streams.](https://www.mongodb.com/docs/manual/reference/command/moveprimary.md#std-label-movePrimary-change-streams)

### Unsharding a Collection

Starting in MongoDB 8.0, you can unshard existing sharded collections with the [`unshardCollection`](https://www.mongodb.com/docs/manual/reference/command/unshardcollection.md#mongodb-dbcommand-dbcmd.unshardCollection) command or the [`sh.unshardCollection()`](https://www.mongodb.com/docs/manual/reference/method/sh.unshardcollection.md#mongodb-method-sh.unshardCollection) method. This operation moves all documents in the collection onto a specified shard or the shard with the least amount of data.

For details, see [Unsharded Collections](https://www.mongodb.com/docs/manual/core/unsharded-collections.md#std-label-unsharded-collections-concept). To get started, see [Unshard a Collection.](https://www.mongodb.com/docs/manual/tutorial/unshard-collection.md#std-label-unshard-collection-task)

### Config Shards

Starting in MongoDB 8.0, you can configure a config server to store your application data in addition to the usual sharded cluster metadata. A [`mongod`](https://www.mongodb.com/docs/manual/reference/program/mongod.md#mongodb-binary-bin.mongod) node that provides both config server and shard server functionality is called a config shard. A `mongod` node that runs as a standalone [`--configsvr`](https://www.mongodb.com/docs/manual/reference/program/mongod.md#std-option-mongod.--configsvr) without shard server functionality is called a dedicated [config server.](https://www.mongodb.com/docs/manual/core/sharded-cluster-config-servers.md#std-label-sharded-cluster-config-server)

To configure a dedicated config server to run as a config shard, run the [`transitionFromDedicatedConfigServer`](https://www.mongodb.com/docs/manual/reference/command/transitionfromdedicatedconfigserver.md#mongodb-dbcommand-dbcmd.transitionFromDedicatedConfigServer) command.

To configure a config shard to run as a dedicated config server, run the [`transitionToDedicatedConfigServer`](https://www.mongodb.com/docs/manual/reference/command/transitiontodedicatedconfigserver.md#mongodb-dbcommand-dbcmd.transitionToDedicatedConfigServer) command.

For details, see [Config Shard](https://www.mongodb.com/docs/manual/core/config-shard.md#std-label-config-shard-concept). To get started, see [Start a Sharded Cluster with a Config Shard](https://www.mongodb.com/docs/manual/tutorial/start-a-sharded-cluster-with-config-shard.md#std-label-start-a-sharded-cluster-with-config-shard). To convert a replica set to a sharded cluster with a config shard, see [Convert Replica Set to an Embedded Config Shard.](https://www.mongodb.com/docs/manual/tutorial/convert-replica-set-to-embedded-config-server.md#std-label-convert-replica-set-to-embedded-config-server)

### New Database Commands

- [`abortMoveCollection`](https://www.mongodb.com/docs/manual/reference/command/abortmovecollection.md#mongodb-dbcommand-dbcmd.abortMoveCollection)

- [`abortUnshardCollection`](https://www.mongodb.com/docs/manual/reference/command/abortunshardcollection.md#mongodb-dbcommand-dbcmd.abortUnshardCollection)

- [`moveCollection`](https://www.mongodb.com/docs/manual/reference/command/movecollection.md#mongodb-dbcommand-dbcmd.moveCollection)

- [`transitionFromDedicatedConfigServer`](https://www.mongodb.com/docs/manual/reference/command/transitionfromdedicatedconfigserver.md#mongodb-dbcommand-dbcmd.transitionFromDedicatedConfigServer)

- [`transitionToDedicatedConfigServer`](https://www.mongodb.com/docs/manual/reference/command/transitiontodedicatedconfigserver.md#mongodb-dbcommand-dbcmd.transitionToDedicatedConfigServer)

- [`unshardCollection`](https://www.mongodb.com/docs/manual/reference/command/unshardcollection.md#mongodb-dbcommand-dbcmd.unshardCollection)

### New mongosh Methods

- [`sh.abortMoveCollection()`](https://www.mongodb.com/docs/manual/reference/method/sh.abortmovecollection.md#mongodb-method-sh.abortMoveCollection)

- [`sh.abortUnshardCollection()`](https://www.mongodb.com/docs/manual/reference/method/sh.abortunshardcollection.md#mongodb-method-sh.abortUnshardCollection)

- [`sh.moveCollection()`](https://www.mongodb.com/docs/manual/reference/method/sh.movecollection.md#mongodb-method-sh.moveCollection)

- [`sh.shardAndDistributeCollection()`](https://www.mongodb.com/docs/manual/reference/method/sh.shardanddistributecollection.md#mongodb-method-sh.shardAndDistributeCollection)

- [`sh.unshardCollection()`](https://www.mongodb.com/docs/manual/reference/method/sh.unshardcollection.md#mongodb-method-sh.unshardCollection)

### serverStatus Metrics

Starting in MongoDB 8.0, [`serverStatus`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-dbcommand-dbcmd.serverStatus) includes the following new `shardingStatistics` fields in its output:

- [`shardingStatistics.countTransitionToDedicatedConfigServerStarted`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.shardingStatistics.countTransitionToDedicatedConfigServerStarted)

- [`shardingStatistics.countTransitionToDedicatedConfigServerCompleted`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.shardingStatistics.countTransitionToDedicatedConfigServerCompleted)

- [`shardingStatistics.countTransitionFromDedicatedConfigServerCompleted`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.shardingStatistics.countTransitionFromDedicatedConfigServerCompleted)

- [`shardingStatistics.configServerInShardCache`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.shardingStatistics.configServerInShardCache)

MongoDB 7.1 includes the following new sharding statistics for chunk migrations:

- [`shardingStatistics.countDonorMoveChunkCommitted`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.shardingStatistics.countDonorMoveChunkCommitted)

- [`shardingStatistics.countDonorMoveChunkAborted`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.shardingStatistics.countDonorMoveChunkAborted)

- [`shardingStatistics.totalDonorMoveChunkTimeMillis`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.shardingStatistics.totalDonorMoveChunkTimeMillis)

- [`shardingStatistics.countBytesClonedOnRecipient`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.shardingStatistics.countBytesClonedOnRecipient)

- [`shardingStatistics.countDocsClonedOnCatchUpOnRecipient`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.shardingStatistics.countDocsClonedOnCatchUpOnRecipient)

- [`shardingStatistics.countBytesClonedOnCatchUpOnRecipient`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.shardingStatistics.countBytesClonedOnCatchUpOnRecipient)

### Default Chunks Per Shard

Starting in MongoDB 7.2, when you [shard an empty collection](https://www.mongodb.com/docs/manual/core/hashed-sharding.md#std-label-shard-empty-collection) with a hashed shard key, the operation creates one chunk per shard by default. Previously, the operation created two chunks by default.

### directShardOperations Role

Starting in MongoDB 8.0, you can use the [`directShardOperations`](https://www.mongodb.com/docs/manual/reference/built-in-roles.md#mongodb-authrole-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. Stop using the `directShardOperations` role when you finish performing maintenance operations.

### `dbhash` Can Run Directly on a Node in a Sharded Cluster

Starting in MongoDB 8.0.5, you can run [`dbHash`](https://www.mongodb.com/docs/manual/reference/command/dbhash.md#mongodb-dbcommand-dbcmd.dbHash) directly on a shard. For a full list of node direct commands, see [Sharded Node Direct Commands.](https://www.mongodb.com/docs/manual/reference/supported-shard-direct-commands.md#std-label-node-direct-commands)

### Exhaust Cursors Enabled for Sharded Clusters

Starting in MongoDB 7.1, [`mongos`](https://www.mongodb.com/docs/manual/reference/program/mongos.md#mongodb-binary-bin.mongos) supports exhaust cursors when a client's [getMore](https://www.mongodb.com/docs/manual/reference/command/getmore.md#std-label-manual-reference-commands-getMore) request sets the [exhaustAllowed](https://www.mongodb.com/docs/manual/reference/mongodb-wire-protocol.md#std-label-wire-msg-flags)  flag. This can improve query performance on sharded clusters when the client receives multiple replies from the database server for a single request.

### mongos Port Range

Starting in MongoDB 7.1, [`mongos`](https://www.mongodb.com/docs/manual/reference/program/mongos.md#mongodb-binary-bin.mongos) accepts [`--port`](https://www.mongodb.com/docs/manual/reference/program/mongos.md#std-option-mongos.--port) values from \[0, 65535]. For more information, see [`--port`.](https://www.mongodb.com/docs/manual/reference/program/mongos.md#std-option-mongos.--port)

### Query with Partial Shard Key

Starting in MongoDB 7.1, [`findAndModify`](https://www.mongodb.com/docs/manual/reference/command/findandmodify.md#mongodb-dbcommand-dbcmd.findAndModify) and [`deleteOne()`](https://www.mongodb.com/docs/manual/reference/method/db.collection.deleteone.md#mongodb-method-db.collection.deleteOne) can use a partial shard key to query on a sharded collection.

### Resharding Improvements

MongoDB 8.0 introduces significant performance improvements in resharding operations, substantially reducing the amount of time the operation takes to run.

Additionally, if your application and cluster meet the necessary [requirements](https://www.mongodb.com/docs/manual/core/sharding-reshard-a-collection.md#std-label-reshard-requirements) and [limitations](https://www.mongodb.com/docs/manual/core/sharding-reshard-a-collection.md#std-label-resharding-limitations), you can reshard the collection on the same key using the [`reshardCollection`](https://www.mongodb.com/docs/manual/reference/command/reshardcollection.md#mongodb-dbcommand-dbcmd.reshardCollection) command to redistribute your collection, which is much faster than alternative [range migration procedure.](https://www.mongodb.com/docs/manual/core/sharding-balancer-administration.md#std-label-range-migration-procedure)

The following options are added to the command:

| Field | Description |
| --- | --- |
| `forceRedistribution` | Enables same-key resharding. |

For examples, see [Redistribute Data to New Shards.](https://www.mongodb.com/docs/manual/reference/command/reshardcollection.md#std-label-reshardCollection-redistribute-data)

### Self-Managed Backups of Sharded Clusters

Starting in MongoDB 7.1, the [`fsync`](https://www.mongodb.com/docs/manual/reference/command/fsync.md#mongodb-dbcommand-dbcmd.fsync) and [`fsyncUnlock`](https://www.mongodb.com/docs/manual/reference/command/fsyncunlock.md#mongodb-dbcommand-dbcmd.fsyncUnlock) commands can perform fsync operations on sharded clusters.

When run on [`mongos`](https://www.mongodb.com/docs/manual/reference/program/mongos.md#std-program-mongos) with the `lock` field set to `true`, the [`fsync`](https://www.mongodb.com/docs/manual/reference/command/fsync.md#mongodb-dbcommand-dbcmd.fsync) command flushes writes from the storage layer to disk and locks each shard, preventing additional writes. The [`fsyncUnlock`](https://www.mongodb.com/docs/manual/reference/command/fsyncunlock.md#mongodb-dbcommand-dbcmd.fsyncUnlock) command can then be used to unlock the cluster.

This feature enables self-managed backups of sharded clusters using [`mongodump`.](https://www.mongodb.com/docs/database-tools/mongodump.md#std-program-mongodump)

### UpdateOne upsert Behavior on Sharded Collections

Starting in MongoDB 7.1, when using [`updateOne()`](https://www.mongodb.com/docs/manual/reference/method/db.collection.updateone.md#mongodb-method-db.collection.updateOne) with `upsert: true` on a sharded collection, you **do not** need to include the full shard key in the [filter.](https://www.mongodb.com/docs/manual/reference/method/db.collection.updateone.md#std-label-update-one-filter)

### $lookup Stage in Transactions with Sharded Collections

Starting in MongoDB 8.0, you can use the [`$lookup`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup.md#mongodb-pipeline-pipe.-lookup) stage within a transaction while targeting a sharded collection.

## Replication

### Majority Write Concern

Starting in MongoDB 8.0, write operations that use the [`"majority"`](https://www.mongodb.com/docs/manual/reference/write-concern.md#mongodb-writeconcern-writeconcern.-majority-) write concern return an acknowledgment when the majority of replica set members have written the oplog entry for the change. This improves the performance of `"majority"` writes. In previous releases, these operations would wait and return an acknowledgment after the majority of replica set members applied the change.

If your application reads from a secondary immediately after receiving an acknowledgment from a `{ w: "majority" }` write operation (without a [causally consistent](https://www.mongodb.com/docs/manual/core/read-isolation-consistency-recency.md#std-label-causal-consistency) session), the query may return results that don't include changes from the write.

### New replSetGetStatus Metrics

Starting in MongoDB 8.0, the following metrics are available when using the [`replSetGetStatus`](https://www.mongodb.com/docs/manual/reference/command/replsetgetstatus.md#mongodb-dbcommand-dbcmd.replSetGetStatus) command:

- [`replSetGetStatus.electionCandidateMetrics.lastSeenWrittenOpTimeAtElection`](https://www.mongodb.com/docs/manual/reference/command/replsetgetstatus.md#mongodb-data-replSetGetStatus.electionCandidateMetrics.lastSeenWrittenOpTimeAtElection)

- [`replSetGetStatus.electionParticipantMetrics.lastWrittenOpTimeAtElection`](https://www.mongodb.com/docs/manual/reference/command/replsetgetstatus.md#mongodb-data-replSetGetStatus.electionParticipantMetrics.lastWrittenOpTimeAtElection)

- [`replSetGetStatus.electionParticipantMetrics.maxWrittenOpTimeInSet`](https://www.mongodb.com/docs/manual/reference/command/replsetgetstatus.md#mongodb-data-replSetGetStatus.electionParticipantMetrics.maxWrittenOpTimeInSet)

- [`replSetGetStatus.members[n].optimeWritten`](https://www.mongodb.com/docs/manual/reference/command/replsetgetstatus.md#mongodb-data-replSetGetStatus.members-n-.optimeWritten)

- [`replSetGetStatus.members[n].optimeWrittenDate`](https://www.mongodb.com/docs/manual/reference/command/replsetgetstatus.md#mongodb-data-replSetGetStatus.members-n-.optimeWrittenDate)

- [`replSetGetStatus.members[n].lastWrittenWallTime`](https://www.mongodb.com/docs/manual/reference/command/replsetgetstatus.md#mongodb-data-replSetGetStatus.members-n-.lastWrittenWallTime)

- [`replSetGetStatus.optimeWritten`](https://www.mongodb.com/docs/manual/reference/command/replsetgetstatus.md#mongodb-data-replSetGetStatus.optimeWritten)

- [`replSetGetStatus.optimeWrittenDate`](https://www.mongodb.com/docs/manual/reference/command/replsetgetstatus.md#mongodb-data-replSetGetStatus.optimeWrittenDate)

- [`replSetGetStatus.optimes.lastWrittenWallTime`](https://www.mongodb.com/docs/manual/reference/command/replsetgetstatus.md#mongodb-data-replSetGetStatus.optimes.lastWrittenWallTime)

- [`replSetGetStatus.optimes.writtenOpTime`](https://www.mongodb.com/docs/manual/reference/command/replsetgetstatus.md#mongodb-data-replSetGetStatus.optimes.writtenOpTime)

### Oplog Buffers

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`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.buffer), as it now provides metrics on two buffers instead of one.

MongoDB 8.0 deprecates the following server status metrics:

- [`metrics.repl.buffer.count`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.buffer.count)

- [`metrics.repl.buffer.maxSizeBytes`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.buffer.maxSizeBytes)

- [`metrics.repl.buffer.sizeBytes`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.buffer.sizeBytes)

MongoDB 8.0 adds the following server status metrics:

- [`metrics.repl.buffer.apply`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.buffer.apply)

- [`metrics.repl.buffer.apply.count`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.buffer.apply.count)

- [`metrics.repl.buffer.apply.maxCount`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.buffer.apply.maxCount)

- [`metrics.repl.buffer.apply.maxSizeBytes`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.buffer.apply.maxSizeBytes)

- [`metrics.repl.buffer.apply.sizeBytes`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.buffer.apply.sizeBytes)

- [`metrics.repl.buffer.write`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.buffer.write)

- [`metrics.repl.buffer.write.count`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.buffer.write.count)

- [`metrics.repl.buffer.write.maxSizeBytes`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.buffer.write.maxSizeBytes)

- [`metrics.repl.buffer.write.sizeBytes`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.buffer.write.sizeBytes)

- [`metrics.repl.write`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.write)

- [`metrics.repl.write.batchSize`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.write.batchSize)

- [`metrics.repl.write.batches`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.write.batches)

- [`metrics.repl.write.batches.num`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.write.batches.num)

- [`metrics.repl.write.batches.totalMillis`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.write.batches.totalMillis)

## Upgraded TCMalloc

Starting in MongoDB 8.0, MongoDB uses an upgraded version of TCMalloc that uses [per-CPU caches](https://www.mongodb.com/docs/manual/reference/glossary.md#std-term-per-CPU-cache), instead of [per-thread caches](https://www.mongodb.com/docs/manual/reference/glossary.md#std-term-per-thread-cache), to reduce memory fragmentation and make your database more resilient to high-stress workloads.

The new TCMalloc version directly impacts previous production recommendations for Transparent Huge Pages. To learn more, see [TCMalloc Performance Optimization for a Self-Managed Deployment.](https://www.mongodb.com/docs/manual/administration/tcmalloc-performance.md#std-label-tcmalloc-performance)

**See also:**

[TCMalloc Compatibility Changes](https://www.mongodb.com/docs/manual/release-notes/8.0-compatibility.md#std-label-8.0-tcmalloc-compatibility)

### serverStatus Metrics

Starting in MongoDB 8.0, the following new [`serverStatus`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-dbcommand-dbcmd.serverStatus) metrics report information about `tcmalloc` usage:

- [`tcmalloc.usingPerCPUCaches`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.tcmalloc.usingPerCPUCaches)

- [`tcmalloc.generic.peak_memory_usage`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.tcmalloc.generic.peak_memory_usage)

- [`tcmalloc.tcmalloc.cpu_free`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.tcmalloc.tcmalloc.cpu_free)

- [`tcmalloc.tcmalloc.total_bytes_held`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.tcmalloc.tcmalloc.total_bytes_held)

- [`tcmalloc.tcmalloc.cpuCache`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.tcmalloc.tcmalloc.cpuCache)

- [`tcmalloc.tcmalloc.cpuCache.N.overflows`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.tcmalloc.tcmalloc.cpuCache.N.overflows)

- [`tcmalloc.tcmalloc.cpuCache.N.underflows`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.tcmalloc.tcmalloc.cpuCache.N.underflows)

- [`tcmalloc.tcmalloc_derived.total_free_bytes`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.tcmalloc.tcmalloc_derived.total_free_bytes)

## General Changes

### Shutdown Performance

Starting in MongoDB 8.0, [`Bulk.insert()`](https://www.mongodb.com/docs/manual/reference/method/bulk.insert.md#mongodb-method-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.

### Store Application Data on Config Shards

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.](https://www.mongodb.com/docs/manual/core/sharded-cluster-config-servers.md#std-label-sharded-cluster-config-server-config-shards)

### Compaction Improvements

Starting in MongoDB 7.3, the [`compact`](https://www.mongodb.com/docs/manual/reference/command/compact.md#mongodb-dbcommand-dbcmd.compact) command includes a new `freeSpaceTargetMB` option to specify the minimum amount of storage space in megabytes that must be recoverable for compaction to proceed.

#### Background Compaction

Starting in MongoDB 8.0, you can use the new [`autoCompact`](https://www.mongodb.com/docs/manual/reference/command/autocompact.md#mongodb-dbcommand-dbcmd.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.

#### dryRun Option

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.

### Concurrent DDL Operations

Starting in MongoDB 7.1, when you run multiple [DDL operations](https://www.mongodb.com/docs/manual/reference/glossary.md#std-term-DDL--Data-Definition-Language-) that target different collections from the same database, MongoDB runs those operations concurrently.

This change adds two new types to the `serverStatus` [`locks`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.locks) field and [`currentOp.locks`](https://www.mongodb.com/docs/manual/reference/command/currentop.md#mongodb-data-currentOp.locks) output:

- `DDLDatabase`

- `DDLCollection`

### Database Validation on mongos Aggregation Queries

Starting in MongoDB 7.2, aggregation pipeline queries that attempt to use non-existent databases on [mongos](https://www.mongodb.com/docs/manual/reference/program/mongos.md#std-program-mongos) deployments return validation errors.

In previous versions, these aggregation queries return empty cursors.

### DDL Operations

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`](https://www.mongodb.com/docs/manual/reference/command/reshardcollection.md#mongodb-dbcommand-dbcmd.reshardCollection)), any operation that adds or removes a shard only executes after the concurrent DDL operation finishes.

### Error Codes for Exceeding Pipeline Size Limit

Starting in MongoDB 7.1, an aggregation command throws an error when a pipeline exceeds the pipeline stage limit. For more details, see [Number of Stages Restrictions.](https://www.mongodb.com/docs/manual/core/aggregation-pipeline-limits.md#std-label-stage-restrictions)

### getField Field Supports All Strings

Starting in MongoDB 7.2, you can specify any valid [expression](https://www.mongodb.com/docs/manual/reference/mql/expressions.md#std-label-aggregation-expressions) that resolves to a string for the `field` input of the [`$getField`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/getfield.md#mongodb-expression-exp.-getField) operator. In earlier versions, `field` accepts only string constants.

### Improved Index Builds

Starting in MongoDB 7.1, index builds are improved with faster error reporting and increased failure resilience. You can also set the minimum available disk space required for index builds using the new [`indexBuildMinAvailableDiskSpaceMB`](https://www.mongodb.com/docs/manual/reference/parameters.md#mongodb-parameter-param.indexBuildMinAvailableDiskSpaceMB) parameter, which stops index builds if disk space is too low.

The following new index build metrics were added:

- [`indexBuilds.killedDueToInsufficientDiskSpace`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.indexBuilds.killedDueToInsufficientDiskSpace)

- [`indexBuilds.failedDueToDataCorruption`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.indexBuilds.failedDueToDataCorruption)

For full details, see [Index Builds.](https://www.mongodb.com/docs/manual/reference/method/db.collection.createindex.md#std-label-create-index-builds)

### New Parameters

#### auditConfig Parameter

MongoDB 7.1 adds the [`auditConfig`](https://www.mongodb.com/docs/manual/reference/cluster-parameters/auditconfig.md#mongodb-parameter-param.auditConfig) cluster parameter, which contains information on audit configurations from [`mongod`](https://www.mongodb.com/docs/manual/reference/program/mongod.md#mongodb-binary-bin.mongod) and [`mongos`](https://www.mongodb.com/docs/manual/reference/program/mongos.md#mongodb-binary-bin.mongos) server instances.

#### defaultMaxTimeMS Parameter

Starting in MongoDB 8.0, you can use the [`defaultMaxTimeMS`](https://www.mongodb.com/docs/manual/reference/cluster-parameters/defaultmaxtimems.md#mongodb-parameter-param.defaultMaxTimeMS) cluster parameter to specify a default time limit for individual read operations to complete.

#### indexBuildMinAvailableDiskSpaceMB Parameter

MongoDB 7.1 adds the [`indexBuildMinAvailableDiskSpaceMB`](https://www.mongodb.com/docs/manual/reference/parameters.md#mongodb-parameter-param.indexBuildMinAvailableDiskSpaceMB) parameter, which allows you to set the minimum available disk space required for index builds.

#### tcmallocEnableBackgroundThread Parameter

Starting in MongoDB 8.0, the [`tcmallocEnableBackgroundThread`](https://www.mongodb.com/docs/manual/reference/parameters.md#mongodb-parameter-param.tcmallocEnableBackgroundThread) is enabled by default. This allows MongoDB to periodically release memory back to the operating system.

#### procFileSizeLimit Parameter

MongoDB 8.0.21 adds the [`procFileSizeLimit`](https://www.mongodb.com/docs/manual/reference/parameters.md#mongodb-parameter-param.procFileSizeLimit) parameter. If the size of a `procfs` file (tabular text files under `/proc`) exceeds this limit, Full-Time Diagnostic Data Capture skips reading the file.

### New Query Shape and Query Settings

MongoDB 8.0 introduces a new [query shape](https://www.mongodb.com/docs/manual/core/query-shapes.md#std-label-query-shapes). The pre-existing query shape is renamed as the [plan cache query shape.](https://www.mongodb.com/docs/manual/reference/glossary.md#std-term-plan-cache-query-shape)

Starting in MongoDB 8.0, you can add query settings for the new query shape. The [query optimizer](https://www.mongodb.com/docs/manual/reference/glossary.md#std-term-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](https://www.mongodb.com/docs/manual/core/query-plans.md#std-label-index-filters). Index filters are also deprecated starting in MongoDB 8.0, and you should avoid using them.

- To add query settings, use the [`setQuerySettings`](https://www.mongodb.com/docs/manual/reference/command/setquerysettings.md#mongodb-dbcommand-dbcmd.setQuerySettings) command.

- To delete query settings, use the [`removeQuerySettings`](https://www.mongodb.com/docs/manual/reference/command/removequerysettings.md#mongodb-dbcommand-dbcmd.removeQuerySettings) command.

- To retrieve query settings, use a [`$querySettings`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/querysettings.md#mongodb-pipeline-pipe.-querySettings) stage in an aggregation pipeline.

- To block a query shape, see [operation rejection filters.](https://www.mongodb.com/docs/manual/tutorial/operation-rejection-filters.md#std-label-operation-rejection-filters)

- To set the log verbosity level for rejected queries, use the [`systemLog.component.query.rejected.verbosity`](https://www.mongodb.com/docs/manual/reference/configuration-options.md#mongodb-setting-systemLog.component.query.rejected.verbosity) parameter.

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

- [`explain`](https://www.mongodb.com/docs/manual/reference/command/explain.md#mongodb-dbcommand-dbcmd.explain) command in the [`explain.queryShapeHash`](https://www.mongodb.com/docs/manual/reference/explain-results.md#mongodb-data-explain.queryShapeHash) field

- [database profiler](https://www.mongodb.com/docs/manual/tutorial/manage-the-database-profiler.md#std-label-database-profiler) in the [`system.profile.queryShapeHash`](https://www.mongodb.com/docs/manual/reference/database-profiler.md#mongodb-data-system.profile.queryShapeHash) field

- [$currentOp aggregation pipeline stage](https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentop.md#std-label-current-op-agg) in the [`$currentOp.queryShapeHash`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentop.md#mongodb-data--currentOp.queryShapeHash) field

- [slow query log](https://www.mongodb.com/docs/manual/reference/log-messages.md#std-label-log-message-slow-ops)

- [`$queryStats`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/querystats.md#mongodb-pipeline-pipe.-queryStats) stage in the `queryShapeHash` field

Starting in MongoDB 8.0, the existing `queryHash` field is duplicated in a new field named `planCacheShapeHash`. If you're using an earlier MongoDB version, you'll only see the `queryHash` field. Future MongoDB versions will remove the deprecated `queryHash` field, and you'll need to use the `planCacheShapeHash` field instead.

### numInitialChunks Option Removed

Starting in MongoDB 7.2, the `numInitialChunks` option is removed from the [`shardCollection`](https://www.mongodb.com/docs/manual/reference/command/shardcollection.md#mongodb-dbcommand-dbcmd.shardCollection) command. The server automatically creates chunks on every shard in a cluster when using [hashed sharding](https://www.mongodb.com/docs/manual/core/hashed-sharding.md#std-label-sharding-hashed) for an empty collection.

### Parameter Filtering

Starting in MongoDB 8.0, the [`getParameter`](https://www.mongodb.com/docs/manual/reference/command/getparameter.md#mongodb-dbcommand-dbcmd.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](https://www.mongodb.com/docs/manual/reference/command/getparameter.md#std-label-getParameters-startup) or [runtime.](https://www.mongodb.com/docs/manual/reference/command/getparameter.md#std-label-getParameters-runtime)

### Read Concern on Capped Collections

Starting in MongoDB 8.0, you can use read concern [`"snapshot"`](https://www.mongodb.com/docs/manual/reference/read-concern-snapshot.md#mongodb-readconcern-readconcern.-snapshot-) on [capped](https://www.mongodb.com/docs/manual/core/capped-collections.md#std-label-manual-capped-collection) collections.

### serverStatus Output Change

Starting in MongoDB 7.1, the [`serverStatus`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-dbcommand-dbcmd.serverStatus) command output includes the following new metrics:

- [`changeStreamPreImages.expireAfterSeconds`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.changeStreamPreImages.expireAfterSeconds)

- `metrics.changeStreams.showExpandedEvents`

- [`queryStats`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.queryStats)

Starting in MongoDB 7.2, the [`serverStatus`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-dbcommand-dbcmd.serverStatus) command output includes the following new metrics:

- [`metrics.operation.killedDueToMaxTimeMSExpired`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.operation.killedDueToMaxTimeMSExpired)

- [`readPreferenceCounters`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.readPreferenceCounters)

Starting in MongoDB 7.3, the [`serverStatus`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-dbcommand-dbcmd.serverStatus) command output includes the following new metrics:

- [`metrics.repl.stateTransition.totalOperationsRunning`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.stateTransition.totalOperationsRunning)

- [`metrics.repl.stateTransition.totalOperationsKilled`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.stateTransition.totalOperationsKilled)

- [`metrics.repl.waiters.replication`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.waiters.replication)

- [`metrics.repl.waiters.opTime`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.metrics.repl.waiters.opTime)

- [`planCache.classic.skipped`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.planCache.classic.skipped)

- [`planCache.sbe.skipped`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.planCache.sbe.skipped)

Starting in MongoDB 8.0, the [`serverStatus`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-dbcommand-dbcmd.serverStatus) command output includes the following new metrics:

- [`opWorkingTime`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.opWorkingTime)

- [`opWorkingTime.commands`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.opWorkingTime.commands)

- [`opWorkingTime.reads`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.opWorkingTime.reads)

- [`opWorkingTime.writes`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.opWorkingTime.writes)

- [`opWorkingTime.transactions`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.opWorkingTime.transactions)

- [`planCache.classic.replanned`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.planCache.classic.replanned)

- [`planCache.sbe.replanned`](https://www.mongodb.com/docs/manual/reference/command/serverstatus.md#mongodb-serverstatus-serverstatus.planCache.sbe.replanned)

### Sort Option

Starting in MongoDB 8.0, [`updateOne()`](https://www.mongodb.com/docs/manual/reference/method/db.collection.updateone.md#mongodb-method-db.collection.updateOne), [`replaceOne()`](https://www.mongodb.com/docs/manual/reference/method/db.collection.replaceone.md#mongodb-method-db.collection.replaceOne), and [`update`](https://www.mongodb.com/docs/manual/reference/command/update.md#mongodb-dbcommand-dbcmd.update) have an optional `sort` field to order documents before applying an update.

Previous releases use the [`findAndModify()`](https://www.mongodb.com/docs/manual/reference/method/db.collection.findandmodify.md#mongodb-method-db.collection.findAndModify) and [`findOneAndUpdate()`](https://www.mongodb.com/docs/manual/reference/method/db.collection.findoneandupdate.md#mongodb-method-db.collection.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.

### Specify Query Index Hints for distinct Commands

Starting in MongoDB 7.1, the `hint` field is available in the [`distinct`](https://www.mongodb.com/docs/manual/reference/command/distinct.md#mongodb-dbcommand-dbcmd.distinct) command, allowing you to specify the query's index.

### TTL Indexes

Starting in MongoDB 7.1, you can create [TTL indexes](https://www.mongodb.com/docs/manual/core/index-ttl.md#std-label-index-feature-ttl) on [capped collections.](https://www.mongodb.com/docs/manual/core/capped-collections.md#std-label-manual-capped-collection)

### Query Planning and Execution

#### Express Query Stages

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.](https://www.mongodb.com/docs/manual/reference/explain-results.md#std-label-explain-results)

#### Rejected Query Plan Output

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`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/group.md#mongodb-pipeline-pipe.-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`.](https://www.mongodb.com/docs/manual/reference/explain-results.md#mongodb-data-explain.queryPlanner.rejectedPlans)

#### Slot-Based Execution Engine Disabling

Starting in MongoDB 8.0, MongoDB automatically disables slot-based execution engine on collections with an index with a hashed path [prefix](https://www.mongodb.com/docs/manual/core/indexes/index-types/index-compound.md#std-label-compound-index-prefix) of a non-hashed path, where both paths are in the index.

### Batch Multi-Document Insert Operations

Starting in MongoDB 8.0, bulk insert operations outside of [transactions](https://www.mongodb.com/docs/manual/core/transactions.md#std-label-transactions) may no longer produce individual `oplog` entries. Instead, MongoDB typically batches bulk inserts as a single entry. The change stream [`insert`](https://www.mongodb.com/docs/manual/reference/change-events/insert.md#mongodb-data-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.

### OIDC Identity Providers Can Share an Issuer

Starting in MongoDB 8.0, when multiple IdPs are defined, the [`oidcIdentityProviders`](https://www.mongodb.com/docs/manual/reference/parameters.md#mongodb-parameter-param.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.

### Namespaces in Subpipelines

Starting in MongoDB 8.0, namespaces in subpipelines inside [`$lookup`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup.md#mongodb-pipeline-pipe.-lookup) and [`$unionWith`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/unionwith.md#mongodb-pipeline-pipe.-unionWith) are validated to ensure the correct use of `from` and `coll` fields.

For details, see [$lookup subpipelines](https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup.md#std-label-lookup-example-namespaces-in-subpipelines) and [$unionWith subpipelines.](https://www.mongodb.com/docs/manual/reference/operator/aggregation/unionwith.md#std-label-unionWith-example-namespaces-in-subpipelines)

### Query Planner Optimization Time

The [`explain()`](https://www.mongodb.com/docs/manual/reference/method/db.collection.explain.md#mongodb-method-db.collection.explain) method now returns information on query planner optimization time. The [`queryPlanner.optimizationTimeMillis`](https://www.mongodb.com/docs/manual/reference/explain-results.md#mongodb-data-explain.queryPlanner.optimizationTimeMillis) status shows the time in milliseconds that the query planner spent on optimizations.

### chars Length Limit for $trim, $ltrim, and $rtrim

Starting in MongoDB 8.0.22, the length of the string you provide to `chars` is limited to 4096 characters. For details, see [$trim Limitations.](https://www.mongodb.com/docs/manual/reference/operator/aggregation/trim.md#std-label-trim-limitations)

## Upgrade Procedures

**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:

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

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

- [Upgrade a Standalone to 8.0](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-standalone.md#std-label-8.0-upgrade-standalone)

- [Upgrade a Replica Set to 8.0](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set.md#std-label-8.0-upgrade-replica-set)

- [Upgrade a Sharded Cluster to 8.0](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-sharded-cluster.md#std-label-8.0-upgrade-sharded-cluster)

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.](https://www.mongodb.com/products/consulting)

## Download

To download MongoDB 8.0, go to the [MongoDB Download Center.](https://www.mongodb.com/try/download/community-edition)

**Important:**

Minor releases may not support some features, including Atlas Live Migration or `mongosync`. If you require these features, use a Major release instead.

## Downgrade Considerations

### Only Single-Version Downgrades are Supported

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

For example, you can downgrade a 8.0-series to a 7.0-series deployment. However, further downgrading that 7.0-series deployment to a 6.0-series deployment is not supported.

### Downgrade Policy

- Binary downgrades aren't supported for MongoDB Community Edition.

- You cannot downgrade your deployment's FCV (feature compatibility version) to or from a rapid release version of MongoDB.

- If you upgrade or downgrade your deployment's FCV (feature compatibility version), you cannot downgrade your Enterprise deployment's binary version without assistance from support.
