2017-01-28 8 views
0

Я использую эту командуMongoDB импортировать несколько коллекций сразу

mongoimport --db имяБД

импортировать базу данных, которую я экспортирован с помощью mongoexport. В базе данных содержится более 100 коллекций в документации mongoimport, которые необходимо указать имя коллекции и json-файл. Как я могу идти об импорте все коллекции сразу, без необходимости вводить команду для каждой коллекции

ответ

1

Согласно документации

Новое в версии 2.6: Если вы не укажете --collection, mongoimport берет имя коллекции из входного имени файла. MongoDB опускает расширение файла из имени коллекции, если входной файл имеет расширение.

Таким образом, предполагается импортировать одну коллекцию за раз. Поэтому, если вы не написали сценарий оболочки для этого, я не вижу способа.

mongodump и mongorestore гораздо лучше брать полный дб дамп и восстановить его сразу же, как другой части того же документ говорит

Предупреждения

Избегайте использование mongoimport и mongoexport для производства полного экземпляра резервное копирование. Они не надежно сохраняют все богатые типы данных BSON, , поскольку JSON может представлять только подмножество типов, поддерживаемых BSON. Используйте mongodump и mongorestore, как описано в MongoDB Backup Способы такого рода функциональности.

1

Если файлы дампа в .json вы можете использовать скрипт для импорта

ls *.json | sed 's/.metadata.json//' | while read col; do mongoimport -d db_name -c $col < $col.metadata.json; done 

Если файлы дампа в .json.gz вы можете использовать скрипт для импорта

ls *.gz | sed 's/.metadata.json.gz//' | while read col; do mongoimport -d db_name --gzip -c $col < $col.metadata.json.gz; done 
+0

Спасибо для этого скрипта. Сэкономил много набрав :) – owca