Звалити колекцію Монго у формат JSON


119

Чи є спосіб скинути колекцію монго у формат 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
Макс Трукса

6
Якщо Монго розташований на іншому хості, ось приклад док-станції Монго mongoexport --host mongodb1.example.net --port 37017 --username user --password "pass" --collection contacts --db marketing --out mdb1-examplenet.json
Що було б круто

Схоже --pretty, немає версії 2.6.10.
крижана вода

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
Він додає підтримку таких типів даних, як дата та двійкові, які не підтримуються в JSON. Крім того, швидше кодувати та розшифровувати bsonspec.org
Priyanshu Chauhan,

5

Ось моя команда для довідок:

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

У Windows 7 (MongoDB 3.4) потрібно перенести cmd до місця, де знаходиться файл, mongod.exeі він не працює, сказавши, що команду не відновлює .mongo.exeC:\MongoDB\Server\3.4\binmongoexport


Хтось знає про формат, який буде форматувати звичайний json у дурний формат "єдиний рядок без коми", який очікує MongoDB при імпорті?
conor909

3

З документації Монго:

Утиліта 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.