MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So exportieren Sie MongoDB-Abfrageergebnisse in eine JSON-Datei

Die MongoDB-Datenbanktools enthalten ein Dienstprogramm namens mongoexport damit können Sie MongoDB-Daten in eine CSV- oder JSON-Datei exportieren.

Eines der Dinge, die Sie mit diesem Dienstprogramm tun können, ist das Exportieren von Abfrageergebnissen. Dieser Artikel zeigt Ihnen, wie Sie mongoexport verwenden zum Exportieren von MongoDB-Abfrageergebnissen in eine JSON-Datei.

Syntax

Die Syntax für mongoexport geht so:

mongoexport --collection=<coll> <options> <connection-string>

Sie müssen mongoexport ausführen Befehle über die Befehlszeile Ihres Systems (z. B. ein neues Terminal- oder Eingabeaufforderungsfenster).

Führen Sie mongoexport nicht aus Befehle aus dem mongo Hülse.

Beispiel

Der folgende Beispielcode exportiert die Ergebnisse einer Abfrage in eine JSON-Datei:

mongoexport --db=PetHotel --collection=pets --query='{ "type": "Dog" }' --out=data/dogs.json

Dadurch wird eine Abfrage exportiert, die eine Sammlung namens pets abfragt im PetHotel Datenbank. Die Abfrage wird in eine Datei namens dogs.json exportiert in den data/ Mappe.

Wenn der Ordner nicht vorhanden ist, wird er erstellt. Das gleiche mit der Datei. Übrigens setzt dies voraus, dass es keine Berechtigungsprobleme beim Schreiben einer Datei an den angegebenen Speicherort gibt.

In diesem Beispiel habe ich keinen Host, Port, Authentifizierung usw. angegeben, daher wird die Sammlung aus der MongoDB-Instanz exportiert, die auf der standardmäßigen localhost-Portnummer 27017 ausgeführt wird .

Sie können auch den --type verwenden -Parameter, um JSON explizit anzugeben. Der Standardwert ist JSON, daher ist dies beim Exportieren in JSON optional.

Sie können auch --fields einfügen -Parameter, um anzugeben, welche Felder exportiert werden sollen. Standardmäßig werden alle Felder exportiert, wenn JSON verwendet wird. Beim Exportieren in CSV müssen Sie jedoch angeben, welche Felder exportiert werden sollen.

Hier ist ein Beispiel des obigen Beispiels mit diesen beiden hinzugefügten Parametern:

mongoexport --db=PetHotel --collection=pets --type=json --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.json

Nachfolgend finden Sie eine Erklärung der Parameter, die wir hier angegeben haben.

Parameter Beschreibung
--db
oder
-d
Gibt die Datenbank an, auf der mongoexport ausgeführt werden soll . In diesem Fall heißt die Datenbank PetHotel .
Alternativ kann dieser Parameter auch mit -d übergeben werden (anstelle von --db ).
--collection
oder
-c
Gibt die Sammlung an, die wir exportieren (oder für die wir die Abfrage ausführen möchten). In diesem Fall heißt die Sammlung pets .
Dieser Parameter kann alternativ als -c übergeben werden (anstelle von --collection ).
--type Gibt den exportierten Dateityp an. In diesem Fall geben wir json an um es in eine JSON-Datei zu exportieren. Da JSON der Standardwert ist, ist dieser Parameter beim Exportieren in JSON optional.
--fields Gibt die Felder an, die wir exportieren möchten. Wir haben die Möglichkeit, alle Felder oder nur einige zu exportieren. Beim Exportieren in JSON ist die Angabe der Feldnamen optional (beim Exportieren in CSV ist dies erforderlich).
--query
oder
-q
Gibt die Abfrage an, für die wir Ergebnisse exportieren möchten. Dies muss in einfache Anführungszeichen gesetzt werden (damit es nicht mit Ihrer Shell interagiert).
Dieser Parameter kann auch mit -q übergeben werden .
--out Gibt den Namen der exportierten Datei und ihren Speicherort an. Wenn Sie keinen Dateinamen angeben, mongoexport schreibt Daten auf die Standardausgabe (stdout ).

Überprüfen Sie die exportierte Datei

Lassen Sie uns überprüfen, ob der Exportvorgang wie erwartet funktioniert hat.

Lassen Sie uns zuerst die Abfrage für die ursprüngliche Sammlung ausführen.

use PetHotel
db.pets.find({ "type": "Dog" })

Ergebnis:

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }

Wir können also sehen, dass es 4 Hunde gibt, alle mit denselben Feldern, die wir in unserem Exportvorgang angegeben haben.

Öffnen wir nun die exportierte Datei dogs.json um zu sehen, was drin ist:

{"_id":1.0,"name":"Wag","type":"Dog","weight":20.0}
{"_id":2.0,"name":"Bark","type":"Dog","weight":10.0}
{"_id":6.0,"name":"Fetch","type":"Dog","weight":17.0}
{"_id":7.0,"name":"Jake","type":"Dog","weight":30.0}

Alle Daten befinden sich wie erwartet in der exportierten Datei.

Weniger Felder exportieren

Mit --fields können Sie weniger Felder angeben Parameter, wenn Sie möchten.

Beispiel:

mongoexport --db=PetHotel --collection=pets --fields=name,weight --query='{ "type": "Dog" }' --out=data/dogs.json

Ergebnisdatei:

{"_id":1.0,"name":"Wag","weight":20.0}
{"_id":2.0,"name":"Bark","weight":10.0}
{"_id":6.0,"name":"Fetch","weight":17.0}
{"_id":7.0,"name":"Jake","weight":30.0}

Sie werden feststellen, dass die _id Feld war in der exportierten Datei enthalten, obwohl ich es nicht ausdrücklich in --fields eingefügt habe Streit. Das liegt daran, dass die _id -Feld ist beim Exportieren in JSON immer enthalten – auch wenn Sie es nicht explizit einschließen. Dies ist beim Export in CSV nicht der Fall.

Zugriffskontrolle/Authentifizierung

Wenn Sie localhost nicht verwenden, können Sie --host verwenden -Parameter zur Angabe des Hosts und --port um den Port anzugeben. Sie können auch den --username verwenden Parameter zur Angabe des Benutzernamens und --password für das Passwort. Wenn Sie den Kennwortparameter weglassen, werden Sie dazu aufgefordert. Es gibt auch eine --authenticationDatabase Parameter zur Angabe der Authentifizierungsdatenbank, in der der Benutzer erstellt wurde.

Beispiel:

mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --query='{ "type": "Dog" }' --out=data/dogs.json

Suchen Sie nach mongoexport

mongoexport ist Teil des MongoDB Database Tools-Pakets. Die MongoDB-Datenbanktools sind eine Reihe von Befehlszeilendienstprogrammen für die Arbeit mit MongoDB.

Wenn Sie nicht sicher sind, ob Sie die MongoDB Database Tools/mongoexport haben installiert haben, versuchen Sie, den folgenden Befehl in Ihrem Terminal oder Ihrer Eingabeaufforderung auszuführen, um dies zu überprüfen:

mongoexport --version

Wenn Sie es haben, sollten Sie Versionsinformationen usw. sehen. Wenn Sie es nicht haben, können Sie die Installationsanweisungen auf der MongoDB-Website verwenden, um es auf Ihrem System zu installieren.

Wo sollen die Befehle ausgeführt werden?

Vergessen Sie nicht, dass Sie mongoexport ausführen müssen Befehle über die Befehlszeile Ihres Systems (z. B. ein neues Terminal- oder Eingabeaufforderungsfenster).