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ą.


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 )


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.


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.


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


-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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.