MongoDB: импорт и экспорт (mongoimport.exe mongoexport.exe)
Несколько примеров, чтобы показать вам, как использовать mongoexportрезервную копию базы данных.
Преведены примеры как для *nix так и для windows систем
Различие в ключах по вызову пример -d и /d
Помощь по утилите:
mongoexport.exe —help или mongoexport
Небольшой список аргументов из примеров ниже:
options:
-h [ —host ] arg mongo host to connect to ( /s1,s2 for
-u [ —username ] arg username
-p [ —password ] arg password
-d [ —db ] arg database to use
-c [ —collection ] arg collection to use (some commands)
-q [ —query ] arg query filter, as a JSON string
-o [ —out ] arg output file; if not specified, stdout is used
1.1 Экспортировать все документы (все поля) в файл export.json
mongoexport -d Your_DB -c Your_Collect -o export.json
mongoexport.exe /d Your_DB /c Your_Collect /o export.json
1.2 Экспортировать все документы только с полями «name» и «company».
mongoexport -d Your_DB -c Your_Collect -f «name,company» -o export.json
mongoexport.exe /d Your_DB /c Your_Collect /f «name,company» /o export.json
1.3 Экспортируйте все документы с поисковым запросом, в этом случае company > 100000
mongoexport -d Your_DB -c Your_Collect -f «name,company» -q ‘>’ -o export.json
mongoexport.exe /d Your_DB /c Your_Collect /f «name,company» /q ‘>’ /o export.json
1.4 Подключитесь к удаленному серверу, например Your_Server.com, используя имя пользователя и пароль.
mongoexport -h Your_Server.com:37017 -d Your_DB -c Your_Collect -u Your_Username -p Your_Pass -o export.json
mongoexport.exe /h Your_Server.com:37017 /d Your_DB /c Your_Collect /u Your_Username /p Your_Pass /o export.json
Внимание!
Все экспортируемые документы будут в формате JSON.
2. Восстановить базу данных с помощью mongoimport
Несколько примеров, чтобы показать вам, как использовать это mongoimportдля восстановления базы данных.
Просмотрите некоторые общие варианты использования:
mongoimport.exe —help или mongoimport
Небольшой список аргументов из примеров ниже:
options:
-h [ —host ] arg mongo host to connect to ( /s1,s2 for sets)
-u [ —username ] arg username
-p [ —password ] arg password
-d [ —db ] arg database to use
-c [ —collection ] arg collection to use (some commands)
-f [ —fields ] arg comma separated list of field names e.g. -f name,age
—file arg file to import from; if not specified stdin is used
—drop drop collection first
—upsert insert or update objects that already exist
2.1Импортирует все документы из файла «export.json» в database.collection с именем «Your_DB.Your_Collect»:
Все не существующие базы данных или коллекции будут созданы автоматически.
mongoimport -d Your_DB -c Your_Collect —file export.json
mongoimport.exe /d Your_DB /c Your_Collect —file export.json
2.2 Импортирует все документы, вставит или обновит объекты, которые уже существуют (на основе _id):
mongoimport -d Your_DB -c Your_Collect —file export.json —upsert
mongoimport.exe /d Your_DB /c Your_Collect —file export.json —upsert
2.3 Подключитесь к удаленному серверу — Your_Server.com и импортируйте документы из файла export.json на удаленный сервер MongoDB
mongoimport -h Your_Server.com:37017 -d Your_DB -c Your_Collect -u Your_Username -p Your_Pass —file export.json
mongoimport.exe /h Your_Server.com:37017 /d Your_DB /c Your_Collect /u Your_Username /p Your_Pass —file export.json
Как импортировать базу данных в mongodb?
Есть папка с файламиjon и bson. Как ее импортировать в MongoDB?
- Вопрос задан более трёх лет назад
- 554 просмотра
2 комментария
Простой 2 комментария
Катя Фенченко @kathleen1982 Автор вопроса
файлы json и bson

Ярослав Иванов @space2pacman
Решения вопроса 0
Ответы на вопрос 1

Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- MongoDB
Можно ли в одном запросе обновить (если существует) или вставить (в противном случае) элемент в массив?
- 1 подписчик
- 20 окт.
- 25 просмотров

- MongoDB
- +1 ещё
Как создавать вложенные модели в mongodb?
- 2 подписчика
- 19 окт.
- 74 просмотра

- ВКонтакте
- +2 ещё
Как написать мини приложения вк с базой данных?
- 1 подписчик
- 09 окт.
- 111 просмотров

- MongoDB
Как решить проблему SSL peer certificate validation failed: unable to get issuer certificate?
- 1 подписчик
- 03 окт.
- 20 просмотров

- MongoDB
- +1 ещё
Как исключить поля структуры для апдейта в MongoDB, используя go mongo-driver?
- 2 подписчика
- 27 сент.
- 101 просмотр

- Laravel
- +1 ещё
Как сформировать запрос к MongoDB с поиском по int-полям?
- 1 подписчик
- 19 сент.
- 54 просмотра

- MongoDB
- +1 ещё
Model.findOneAndUpdate() больше не принимает обратный вызов?
- 1 подписчик
- 18 сент.
- 40 просмотров

- Python
- +1 ещё
Как добавить значение в пустой массив MongoDB?
- 1 подписчик
- 14 сент.
- 38 просмотров

- Python
- +1 ещё
Почему find не находит значения в БД?
- 1 подписчик
- 11 сент.
- 96 просмотров

- MongoDB
Как можно, и вообще можно ли хранить фото и видео в базе данных mongo?
- 3 подписчика
- 31 авг.
- 520 просмотров
от 120 000 ₽
от 250 000 до 350 000 ₽
от 350 000 ₽
30 окт. 2023, в 01:00
50000 руб./за проект
30 окт. 2023, в 00:03
10000 руб./за проект
29 окт. 2023, в 23:47
1200 руб./за проект
Минуточку внимания
Присоединяйтесь к сообществу, чтобы узнавать новое и делиться знаниями
- Возможно ли восстановить сайт?
- 2 подписчика
- 1 ответ
- 3 подписчика
- 1 ответ
- 1 подписчик
- 2 ответа
- 2 подписчика
- 1 ответ
- 2 подписчика
- 0 ответов
- 1 подписчик
- 2 ответа
- 2 подписчика
- 0 ответов
- 2 подписчика
- 1 ответ
- 2 подписчика
- 0 ответов
- 2 подписчика
- 1 ответ
Как экспортировать данные из MongoDB в CSV
MongoDB неплохо справляется с задачей хранения огромных коллекций неструктурированных данных. Иначе говоря, если вы не можете описать структуру своих данных и не знаете как она изменится в будущем, но можете эти данные отобразить в json-формате, то mongo справится с задачей хранения schemaless данных.
Однако, большое количество документов в json-формате достаточно трудно отобразить в удобном для человека виде. Для экспорта простых отчётов их монги можно написать небольшой скрипт:
print("id,name,city"); db.collection.find(< "location.country": "anything" >, < "id": 1, "name": 1, "location.city": 1 >).forEach(function(item) < if(typeof item.location === "undefined") < city = ""; >else < city = item.location.city; >print(item.id + "," + item.name + "," + city ); >);И выполнить его в MongoDB таким способом:
mongo database export.js > out.csv
Поясню по скрипту:
- в первой строке выводим заголовки столбцов в CSV формате
- затем фильтруем (find) коллекцию (db.collection) по полю (location.country)
- перечисляем имена полей («id»: 1) которые нужно извлечь из документов
- если в документе не определено поле (typeof item.location === «undefined»), задать ему значение по-умолчанию
- формируем строку со значениями через запятую в CSV формате
Post Views: 1 780
Читайте также
Как редактировать crontab через nano Vim не самый юзер-френдли текстовый консольный редактор, например, nano на порядок удобнее и интуитивнее. Однако, именно vim является редактором для…
Как использовать команду watch с пайпами Периодически при работе с консолью Linux нужно пронаблюдать за изменением вывода какой-либо команды с промежутком в несколько секунд. Для этого…
Поменять местами значения переменных в PHP Существует красивое и элегантное решение в одну строку: list($a, $b) = [$b, $a]; А для PHP версий 5.3 и старше…
Импорт и экспорт баз данных MongoDB в Ubuntu 14.04
MongoDB – одна из самых популярных систем управления базами данных NoSQL. Она производительна, надёжна, проста в использовании и масштабировании. Данное руководство научит импортировать и экспортировать базы данных MongoDB.
Примечание: В данном руководстве данные будут перемещаться в удобном для восприятия человеком формате, совместимом с другими программами. В отличие от этого, операции резервного копирования и восстановления данных связаны с определенными двоичными данными MongoDB, которые отвечают не только за последовательность и целостность данных, но и за специфические параметры MongoDB. Таким образом, использовать резервное копирование и восстановление при миграции данных предпочтительнее в совместимых системах.
Требования
- Сервер Ubuntu 14.04
- Не-root пользователь с доступом к sudo
- Предварительно установленная система управления базами данных MongoDB (инструкции по установке – здесь)
Базовые понятия
Прежде чем приступить к перемещению данных, нужно ознакомиться с базовыми понятиями. В целом, система MongoDB в этом смысле имеет много общего с MySQL.
Для хранения информации MongoDB использует файлы json и bson (бинарный json). Json – это удобочитаемый для человека текстовый формат обмена данными. После перемещения данных в формате json ими можно управлять при помощи любого инструмента, поддерживающего такой формат.
Документ json выглядит так:
С форматом json очень удобно работать, однако он не поддерживает всех типов данных, поддерживаемых bson. Это значит, что при передаче данных может произойти потеря точности. Потому для создания и восстановления бэкапа рекомендуется использовать формат bson.
В системе MongoDB не нужно явно создавать БД. Если БД, указанная в импорте, ещё не существует, система создаст её автоматически. Ещё проще дела обстоят с коллекциями (таблицами). В отличие от остальных систем управления базами данных, MongoDB автоматически создаёт структуру при внесении первой строки.
Чтение или внесение больших объёмов данных в MongoDB может быть очень затратным и потребить большую часть CPU, памяти и дискового пространства. Учитывая, что MongoDB часто используется для работы с Big Data, это критическая проблема. Самое простое её решение – выполнять экспорт и бэкап данных во время низкого трафика (например, ночью).
Следует иметь в виду, что если в течение экспорта данных информация на сервере MongoDB была изменена, это может негативно сказаться на согласованности данных. К сожалению, эта проблема не имеет простого решения.
Импорт данных MongoDB
Для примера используем один из образцов базы данных MongoDB. Загрузите файл json:
После завершения загрузки в текущем каталоге появится файл primer-dataset.json (12 MB). Попробуйте импортировать данные из этого файла в новую БД (в данном руководстве она называется newdb) в коллекцию restaurants. Для этого используется команда mongoimport:
sudo mongoimport —db newdb —collection restaurants —file primer-dataset.json
2016-01-17T14:27:04.806-0500 connected to: localhost
2016-01-17T14:27:07.315-0500 imported 25359 documentsКак показала эта команда, система импортировала 25359 документов. Обратите внимание: поскольку целевой БД newdb не существовало, СУБД создала её автоматически.
Чтобы убедиться, что импорт данных прошёл успешно, подключитесь к новой БД:
sudo mongo newdb
Теперь вы подключены к новой базе newdb. Обратите внимание на изменившуюся командную строку.
При помощи следующей команды можно посчитать документы в коллекции restaurants:
Команда должна вернуть точное количество импортированных документов (в данном случае – 25359). Для дополнительной проверки можно выбрать первый документ из коллекции:
«_id» : ObjectId(«569beb098106480d3ed99926»),
«address» : «building» : «1007»,
«coord» : [
-73.856077,
40.848447
],
«street» : «Morris Park Ave»,
«zipcode» : «10462»
>,
«borough» : «Bronx»,
«cuisine» : «Bakery»,
«grades» : [
«date» : ISODate(«2014-03-03T00:00:00Z»),
«grade» : «A»,
«score» : 2
>,
.
],
«name» : «Morris Park Bake Shop»,
«restaurant_id» : «30075445»
>Такая подробная проверка может выявить такие проблемы, как повреждение контента документа, несогласованность данных и т.п. Формат The json использует кодирование UTF-8, потому импортировать и экспортировать данные нужно именно с таким шифрованием. В противном случае MongoDB установит это шифрование автоматически.
Чтобы закрыть командную строку MongoDB, введите:
Эта команда вернёт вас в обычную командную строку системы.
Экспорт данных MongoDB
Как уже говорилось в начале, при экспорте можно получить данные в удобочитаемом формате. По умолчанию информация экспортируется в формате json, но также можно настроить использование csv (comma separated value).
Для экспорта данных MongoDB используется команда mongoexport. Она позволяет выполнить подробный экспорт данных: указать имя БД, коллекцию, поле, и даже запрос.
Давайте попробуем экспортировать коллекцию restaurants из базы данных newdb:
sudo mongoexport —db newdb -c restaurants —out newdbexport.json
Флаг –db позволяет указать имя БД, флаг -c указывает коллекцию, –out задаёт файл, в который нужно сохранить данные.
В случае успешного перемещения данных команда вернёт:
2016-01-20T03:39:00.143-0500 connected to: localhost
2016-01-20T03:39:03.145-0500 exported 25359 recordsСогласно выводу команды, было экспортировано 25359 документов. Как видите, это совпадает с количеством импортированных документов.
В некоторых случаях нужно экспортировать только часть коллекции. Учитывая структуру и содержание файла restaurants, попробуйте экспортировать все документы, содержащие информацию о китайских ресторанах, находящихся в Бронксе. Чтобы получить эти данные, оставаясь в MongoDB, создайте соединение с БД:
sudo mongo newdb
Затем создайте запрос:
Результат будет выведен в терминал. Чтобы закрыть командную строку MongoDB, введите:
Чтобы экспортировать данные из системной командной строки пользователя sudo (а не при подключении к БД), добавьте в команду mongoexport часть запроса при помощи флага –q:
sudo mongoexport —db newdb -c restaurants -q «< borough: 'Bronx', cuisine: 'Chinese' >» —out Bronx_Chinese_retaurants.json
Обратите внимание: в команде используются простые кавычки, а не двойные. При использовании двойных кавычек или специальных символов (например, $) нужно использовать обратный слеш (\), чтобы избежать их в запросе.
Если экспорт прошёл успешно, команда вернёт:
2016-01-20T04:16:28.381-0500 connected to: localhost
2016-01-20T04:16:28.461-0500 exported 323 recordsКоманда показывает 323 экспортированных записи. Их можно найти в файле Bronx_Chinese_retaurants.json.
Заключение
Это руководство охватывает только основы передачи данных в MongoDB. Дополнительную информацию о работе с этой СУБД можно найти в следующих руководствах:
- Настройка масштабируемой базы данных MongoDB
- Бэкап, восстановление и перемещение данных MongoDB в Ubuntu 14.04
Репликация данных полезна не только при масшабировании, она также может пригодиться в повседневной работе. Репликация данных позволяет поддерживать работу приложения в случае сбоя сервера MongoDB; это делается за счёт ведомых (или slave) серверов MongoDB. В процессе репликации задействованы логи operations (или oplog), которые хранят все операции, изменившие данные. Эти файлы можно использовать для восстановления данных.
Имейте в виду: резервное копирование, как правило, выполняется в ночное время; если вы решите восстановить резервную копию в вечернее время, вы потеряете все обновления данных с момента последнего резервного копирования.