Дамп 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 ( документы )


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


-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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.