Дамп Mongo Collection в формат JSON

119

Есть ли способ сбросить коллекцию mongo в формат json? Либо в оболочке, либо с использованием драйвера java. Я ищу тот, который имеет лучшую производительность.

Парвин Гасымзаде
источник
mongoexport -d <database> -c <collection_name> --out <xxx.json> --pretty --host <host> --port <port> --username <user> --authenticationDatabase adminВы можете указать host, port, username, passwordкак это и база данных аутентификации по умолчанию admin.
Макс Пэн

Ответы:

177

Mongo включает утилиту mongoexport (см. Документацию), которая может сбрасывать коллекцию. Эта утилита использует собственный libmongoclient и, вероятно, является самым быстрым методом.

mongoexport -d <database> -c <collection_name>

Также полезно:

-o: записать вывод в файл, в противном случае используется стандартный вывод ( документы )

--jsonArray: генерирует действительный документ json вместо одного объекта json на строку ( документы )

--pretty: выводит отформатированный json ( документы )

VRTX
источник
8
Используйте флаг -d, чтобы указать, какую базу данных использовать.
Реймунд
8
Если вам нужен хорошо напечатанный JSON (например, для проверки коллекции во время разработки), используйте --prettyфлаг:mongoexport -d mydatabase -c mycollection --pretty
Max Truxa
6
Если Mongo находится на другом хосте, вот пример из документа Mongo mongoexport --host mongodb1.example.net --port 37017 --username user --password "pass" --collection contacts --db marketing --out mdb1-examplenet.json
What
Похоже, что --prettyв версии 2.6.10 больше нет.
Iceedwater
115

Используйте mongoexport / mongoimport для дампа / восстановления коллекции:

Экспорт файла JSON :

mongoexport --db <database-name> --collection <collection-name> --out output.json

Импортировать файл JSON :

mongoimport --db <database-name> --collection <collection-name> --file input.json

ПРЕДУПРЕЖДЕНИЕ mongoimportи mongoexportне сохраняйте надежно все богатые типы данных BSON, потому что JSON может представлять только подмножество типов, поддерживаемых BSON. В результате данные, экспортированные или импортированные с помощью этих инструментов, могут потерять некоторую степень точности.

Также http://bsonspec.org/

BSON предназначен для быстрого кодирования и декодирования. Например, целые числа хранятся как 32 (или 64) битные целые числа, поэтому их не нужно анализировать в текст и обратно. Это использует больше места, чем JSON для небольших целых чисел, но намного быстрее анализируется.

Помимо компактности, BSON добавляет дополнительные типы данных, недоступные в JSON, в частности типы данных BinData и Date.

Прияншу Чаухан
источник
1
Есть ли пример того, что «богатые данные BSON» не переживут цикл mongoexport/ mongoimportтуда и обратно?
andrewdotn
1
Он добавляет поддержку таких типов данных, как Date и binary, которые не поддерживаются в JSON. Кроме того, более быстрое кодирование и декодирование bsonspec.org
Прияншу Чаухан
5

Вот моя команда для справки:

mongoexport --db AppDB --collection files --pretty --out output.json

В Windows 7 (MongoDB 3.4) нужно переместить cmd в место, где находится mongod.exeи mongo.exeфайл => C:\MongoDB\Server\3.4\binиначе он не будет работать, говоря, что он не распознает mongoexportкоманду.

Ночная ярость
источник
Кто-нибудь знает форматировщик, который будет форматировать обычный json в глупый формат «одна строка без запятой», который MongoDB ожидает при импорте?
conor909
3

Из документации Mongo:

Утилита mongoexport берет коллекцию и экспортирует ее в JSON или CSV. Вы можете указать фильтр для запроса или список полей для вывода

Подробнее здесь: http://www.mongodb.org/display/DOCS/mongoexport

Ниндзя
источник
-2

Если вы хотите сбросить все коллекции, выполните эту команду:

mongodump -d {DB_NAME}   -o /tmp 

Он сгенерирует все данные коллекций jsonи bsonрасширения в /tmp/{DB_NAME}каталог

Мо Фар
источник
На самом деле он все еще сбрасывает bson и metadata.bson :-(
Prasad
9
Это неверный ответ. mongodumpвыводит данные в BSONформате. Другие ответы правильно называют mongoexportправильным инструментом.
Christian Dechery
Это работает для меня, он выводит всю коллекцию в папку tmp с файлами bson и json. Я использовал mongodump -d {dbname} -o tmp
shyamzzp