Zrzuć kolekcję Mongo do formatu JSON

119

Czy istnieje sposób na zrzucenie kolekcji mongo do formatu json? Czy to w powłoce, czy przy użyciu sterownika java, szukam tego z najlepszą wydajnością.

Parvin Gasimzade
źródło
mongoexport -d <database> -c <collection_name> --out <xxx.json> --pretty --host <host> --port <port> --username <user> --authenticationDatabase adminMożna określić host, port, username, passwordtak i domyślna baza danych uwierzytelniania jest admin.
Max Peng

Odpowiedzi:

177

Mongo zawiera narzędzie mongoexport (zobacz dokumentację), które może zrzucić kolekcję. To narzędzie korzysta z natywnego libmongoclient i jest prawdopodobnie najszybszą metodą.

mongoexport -d <database> -c <collection_name>

Pomocne również:

-o: zapisz wyjście do pliku, w przeciwnym razie używane jest standardowe wyjście ( docs )

--jsonArray: generuje prawidłowy dokument json zamiast jednego obiektu json w wierszu ( docs )

--pretty: wyświetla sformatowane json ( dokumenty )

vrtx
źródło
8
Użyj opcji -d, aby określić, której bazy danych użyć.
Reimund,
8
Jeśli chcesz mieć ładny wydrukowany JSON (np. W celu sprawdzenia kolekcji podczas tworzenia), użyj --prettyflagi:mongoexport -d mydatabase -c mycollection --pretty
Max Truxa
6
Jeśli Mongo znajduje się na innym hoście, oto przykład z dokumentu Mongo mongoexport --host mongodb1.example.net --port 37017 --username user --password "pass" --collection contacts --db marketing --out mdb1-examplenet.json
What Would Be Cool
Wygląda na --prettyto, że zniknął w wersji 2.6.10.
icedwater
115

Użyj mongoexport / mongoimport, aby zrzucić / przywrócić kolekcję:

Eksportuj plik JSON :

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

Importuj plik JSON :

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

OSTRZEŻENIE mongoimporti mongoexportnie przechowuj niezawodnie wszystkich bogatych typów danych BSON, ponieważ JSON może reprezentować tylko podzbiór typów obsługiwanych przez BSON. W rezultacie dane eksportowane lub importowane za pomocą tych narzędzi mogą stracić pewną miarę wierności.

Ponadto http://bsonspec.org/

BSON został zaprojektowany tak, aby był szybki w kodowaniu i dekodowaniu. Na przykład liczby całkowite są przechowywane jako 32 (lub 64)-bitowe liczby całkowite, więc nie trzeba ich analizować do iz tekstu. Zużywa to więcej miejsca niż JSON dla małych liczb całkowitych, ale jest znacznie szybsze do przeanalizowania.

Oprócz zwartości BSON dodaje dodatkowe typy danych niedostępne w JSON, w szczególności typy danych BinData i Date.

Priyanshu Chauhan
źródło
1
Czy jest przykładem tego, co „bogata dane BSON” nie przetrwać mongoexport/ mongoimportw obie strony?
andrewdotn
1
Dodaje obsługę typów danych, takich jak data i binarne, które nie są obsługiwane w formacie JSON. Ponadto, szybsze kodowanie i dekodowanie bsonspec.org
Priyanshu Chauhan
5

Oto moje polecenie w celach informacyjnych:

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

W systemie Windows 7 (MongoDB 3.4), trzeba przesunąć cmd do miejsca, gdzie mongod.exei mongo.exezamieszkuje file => C:\MongoDB\Server\3.4\bininny nie będzie działać, mówiąc, że nie recongnize mongoexportpolecenie.

nocna Furia
źródło
Czy ktoś zna program formatujący, który sformatuje zwykły json do głupiego formatu „pojedynczej linii bez przecinka”, którego MongoDB oczekuje podczas importowania?
conor909
3

Z dokumentacji Mongo:

Narzędzie mongoexport pobiera kolekcję i eksportuje do formatu JSON lub CSV. Możesz określić filtr dla zapytania lub listę pól do wyprowadzenia

Przeczytaj więcej tutaj: http://www.mongodb.org/display/DOCS/mongoexport

Ninja
źródło
-2

Jeśli chcesz zrzucić wszystkie kolekcje, uruchom to polecenie:

mongodump -d {DB_NAME}   -o /tmp 

Wygeneruje wszystkie dane kolekcji jsoni bsonrozszerzenia do /tmp/{DB_NAME}katalogu

Moe Far
źródło
W rzeczywistości nadal zrzuca bson i metadata.bson :-(
Prasad
9
Ta odpowiedź jest nieprawidłowa. mongodumpwyprowadza dane w BSONformacie. Inne odpowiedzi poprawnie określane mongoexportjako właściwe narzędzie.
Christian Dechery,
To działa dla mnie, wyprowadza całą kolekcję do folderu tmp z plikami bson i json. Użyłem mongodump -d {dbname} -o tmp
shyamzzp