MongoDB Major-Version FCV Upgrade Process

This is applicable when mongo is running in docker.

1. Prerequisites

Ensure you have a running Docker Compose setup with a mongo service.

Verify you have backup of your data volume.

2. Version-by-Version Upgrade

For each target version (5.0 → 6.0 → 7.0 → 8.0), perform:

  • Set the image

    In your docker-compose.yml, update the Mongo service:

services:
mongo:
image: mongo:<TARGET_VERSION>

  • Start the container

docker compose up -d mongo

  • Verify current FCV

docker compose exec mongo mongosh -u <user> -p <password> --authenticationDatabase admin --quiet --eval "db.adminCommand({getParameter:1,featureCompatibilityVersion:1})"

  • Set the FCV

docker compose exec mongo mongosh -u <user> -p <password> --authenticationDatabase admin --quiet --eval "db.adminCommand({setFeatureCompatibilityVersion:'<MAJOR.MINOR>'})"

  • Use confirm:true when upgrading to 7.0 or 8.0 (irreversible).

  • Shut down

docker compose down

3. Final Bring-Up

After the last step (8.0):

docker compose up -d


Example Versions Mapping

Step

Image Version

FCV Value

confirm:true?

1

5.0.31

"5.0"

no

2

6.0.23

"6.0"

no

3

7.0.20

"7.0"

yes

4

8.0.9

"8.0"

yes


This ensures your on-disk metadata is safely stepped through each FCV level before MongoDB 8.0 starts.

For Example:

Copy
mongo:5.0.31
docker compose up mongo -d
docker compose exec mongo mongosh -u %MONGO_INITDB_ROOT_USERNAME% -p %MONGO_INITDB_ROOT_PASSWORD% --authenticationDatabase admin --quiet --eval "db.adminCommand({setFeatureCompatibilityVersion:'5.0'})"
docker compose down

mongo:6.0.23
docker compose up mongo -d
docker compose exec mongo mongosh -u %MONGO_INITDB_ROOT_USERNAME% -p %MONGO_INITDB_ROOT_PASSWORD% --authenticationDatabase admin --quiet --eval "db.adminCommand({setFeatureCompatibilityVersion:'6.0'})"
docker compose down

mongo:7.0.20
docker compose up mongo -d
docker compose exec mongo mongosh -u %MONGO_INITDB_ROOT_USERNAME% -p %MONGO_INITDB_ROOT_PASSWORD% --authenticationDatabase admin --quiet --eval "db.adminCommand({setFeatureCompatibilityVersion:'7.0', confirm:true})"
docker compose down

mongo:8.0.9
docker compose up mongo -d
docker compose exec mongo mongosh -u %MONGO_INITDB_ROOT_USERNAME% -p %MONGO_INITDB_ROOT_PASSWORD% --authenticationDatabase admin --quiet --eval "db.adminCommand({setFeatureCompatibilityVersion:'8.0', confirm:true})"

docker compose up -d

You may notice on some machines --authenticationDatabase admin doesn't work. In this case use --authenticationDatabase simflofy - if simflofy is the name of your DB.