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