Подтвердить что ты не робот

Mongorestore в другую базу данных

В MongoDB можно ли сбросить базу данных и восстановить содержимое в другую базу данных? Например, например:

mongodump --db db1 --out dumpdir
mongorestore --db db2 --dir dumpdir

Но это не сработает. Вот сообщение об ошибке:

создание списка коллекций для восстановления из dumpdir dir

не знаю, что делать с подкаталогом "dumpdir/db1", пропуская...

сделать

4b9b3361

Ответ 1

Вам нужно фактически указать в каталоге "имя базы данных" в пределах выходного каталога из предыдущего дампа:

mongorestore -d db2 dumpdir/db1

И обычно just <path> отлично в качестве позиционного аргумента, а не с -dir, который нужен только тогда, когда "вне позиции" i.e "находится в середине списка аргументов".

p.s. Для архивного файла резервной копии (проверено с помощью mongorestore v3.4.10)

mongorestore --gzip --archive=${BACKUP_FILE_GZ} --nsFrom "${DB_NAME}.*" --nsTo "${DB_NAME_RESTORE}.*"

Ответ 2

В дополнение к ответу Blakes Seven, если ваши базы данных используют аутентификацию, я включил эту опцию для работы с опцией --uri, для которой требуется последняя версия mongo (> 3.4.6):

mongodump --uri="mongodb://$sourceUser:[email protected]$sourceHost/$sourceDb" --gzip --archive | mongorestore --uri="mongodb://$targetUser:[email protected]$targetHost/$targetDb" --nsFrom="$sourceDb.*" --nsTo="$targetDb.*" --gzip --archive