Dump Mongo Collection in das JSON-Format

119

Gibt es eine Möglichkeit, die Mongo-Sammlung in das JSON-Format zu verschieben? Entweder auf der Shell oder mit dem Java-Treiber. Ich suche den mit der besten Leistung.

Parvin Gasimzade
quelle
mongoexport -d <database> -c <collection_name> --out <xxx.json> --pretty --host <host> --port <port> --username <user> --authenticationDatabase adminSie können die angeben host, port, username, passwordwie diese und die Standard - Authentifizierungsdatenbank ist admin.
Max Peng

Antworten:

177

Mongo enthält ein Mongoexport-Dienstprogramm (siehe Dokumente), mit dem eine Sammlung gesichert werden kann. Dieses Dienstprogramm verwendet den nativen libmongoclient und ist wahrscheinlich die schnellste Methode.

mongoexport -d <database> -c <collection_name>

Auch hilfreich:

-o: schreibe die Ausgabe in eine Datei, andernfalls wird die Standardausgabe verwendet ( docs )

--jsonArray: generiert ein gültiges JSON-Dokument anstelle eines JSON-Objekts pro Zeile ( Dokumente )

--pretty: gibt formatiertes json aus ( docs )

vrtx
quelle
8
Verwenden Sie das Flag -d, um anzugeben, welche Datenbank verwendet werden soll.
Reimund
8
Wenn Sie hübsch gedrucktes JSON möchten (z. B. um eine Sammlung während der Entwicklung zu überprüfen), verwenden Sie das --prettyFlag:mongoexport -d mydatabase -c mycollection --pretty
Max Truxa
6
Wenn sich Mongo auf einem anderen Host befindet, ist hier ein Beispiel aus dem Mongo-Dokument mongoexport --host mongodb1.example.net --port 37017 --username user --password "pass" --collection contacts --db marketing --out mdb1-examplenet.json
Was wäre cool?
Es scheint --pretty, als wäre es ab Version 2.6.10 weg.
Eiswasser
115

Verwenden Sie mongoexport / mongoimport, um eine Sammlung zu sichern / wiederherzustellen:

JSON-Datei exportieren :

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

JSON-Datei importieren :

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

WARNUNG mongoimportund mongoexportbewahren Sie nicht alle Rich-BSON-Datentypen zuverlässig auf, da JSON nur eine Teilmenge der von BSON unterstützten Typen darstellen kann. Infolgedessen können mit diesen Tools exportierte oder importierte Daten ein gewisses Maß an Wiedergabetreue verlieren.

Auch http://bsonspec.org/

BSON ist so konzipiert, dass es schnell codiert und decodiert werden kann. Ganzzahlen werden beispielsweise als 32- (oder 64-) Bit-Ganzzahlen gespeichert, sodass sie nicht in und aus Text analysiert werden müssen. Dies benötigt mehr Speicherplatz als JSON für kleine Ganzzahlen, ist jedoch viel schneller zu analysieren.

Zusätzlich zur Kompaktheit fügt BSON zusätzliche Datentypen hinzu, die in JSON nicht verfügbar sind, insbesondere die Datentypen BinData und Date.

Priyanshu Chauhan
quelle
1
Gibt es ein Beispiel dafür , was „reich BSON Daten“ würden nicht überleben mongoexport/ mongoimportHin- und Rückfahrt?
Andrewdotn
1
Es bietet Unterstützung für Datentypen wie Datum und Binär, die in JSON nicht unterstützt werden. Auch schneller zum Kodieren und Dekodieren von bsonspec.org
Priyanshu Chauhan
5

Hier ist mein Befehl als Referenz:

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

Unter Windows 7 (MongoDB 3.4) hat man die cmd an den Ort zu bewegen , wo mongod.exeund mongo.exeDatei befindet => C:\MongoDB\Server\3.4\binsonst wird es nicht es nicht recongnize arbeiten sagen mongoexportBefehl.

Nacht Wut
quelle
Kennt jemand einen Formatierer, der normales JSON in das alberne "Single Line No Comma" -Format formatiert, das MongoDB beim Import erwartet?
conor909
3

Aus der Mongo-Dokumentation:

Das Dienstprogramm mongoexport nimmt eine Sammlung und exportiert sie entweder nach JSON oder nach CSV. Sie können einen Filter für die Abfrage oder eine Liste der auszugebenden Felder angeben

Lesen Sie hier mehr: http://www.mongodb.org/display/DOCS/mongoexport

Ninja
quelle
-2

Wenn Sie alle Sammlungen sichern möchten, führen Sie den folgenden Befehl aus:

mongodump -d {DB_NAME}   -o /tmp 

Es werden alle Sammlungsdaten jsonund bsonErweiterungen in das /tmp/{DB_NAME}Verzeichnis generiert

Moe Far
quelle
Tatsächlich wird immer noch bson und metadata.bson ausgegeben :-(
Prasad
9
Diese Antwort ist falsch. mongodumpgibt Daten im BSONFormat aus. Andere Antworten werden korrekt mongoexportals das richtige Werkzeug bezeichnet.
Christian Dechery
Dies funktioniert für mich, da die gesamte Sammlung in einem tmp-Ordner mit bson- und json-Dateien ausgegeben wird. Ich habe mongodump -d {dbname} -o tmp
shitamzzp