I created a backup of all my databases using mongodump command. Now I want to restore a specific database using mongorestore command.
How is this possible, I use this command: --db option then mongodb doesn't restore a specific database.
To restore a single database you need to provide the path to the dump directory as part of the mongorestore
command line.
For example:
# Backup the training database
mongodump --db training
# Restore the training database to a new database called training2
mongorestore --db training2 dump/training
The --db
option for mongodump
specifies the source database to dump.
The --db
option for mongorestore
specifies the target database to restore into.
$ mongorestore --drop -d <database-name> <dir-of-backup-files>
--drop
Drop is necessary if you are replacing an existing db-d <database-name>
The name of the database to create/replace<dir-of-backup-files>
For some reason this is necessary even if it's the current directoryReference: https://coderwall.com/p/3hx06a/restore-a-mongodb-database-mongorestore
After making sure that mongod
and mongo
are running, go to the dump's parent directory in a new terminal. And use the command mongorestore dump
. Where dump
is the folder name in which the database dump is present.
Maybe slightly unrelated, but based on the answers here i got the following
Using mongodump and mongorestore archive feature I comprised a oneliner:
mongodump --host H --port P --username U --password PWD --archive | mongorestore --username U1 --password PWD1 --archive
The above example will :
H
with port P
logged in with user U
and password PWD
U1
and password PWD1
In case you are restoring from an archive, --db
won't work.
From the mongodb docs:
The use of
--db
and--collection
options are deprecated when restoring from a directory or an archive file.
So if you are restoring from an archive (--archive
) you should add this:
--nsFrom="ORIGINAL_DB_NAME.*" --nsTo="NEW_DB_NAME.*"