it-swarm.com.de

Wie man Json aus Mongodb mit Robomongo exportiert

Daher weiß ich nicht viel über MongoDB. Ich habe RoboMongo, mit dem ich mich mit einer MongoDB verbinde. Was ich tun muss, ist folgendes - in MongoDB gibt es eine Sammlung. Ich möchte die Daten aus dieser Sammlung exportieren, um sie in einer Datei speichern zu können.

Ich habe die Schnittstelle verwendet, um die Daten aus der Sammlung als Text zu öffnen, einen CTRL + A erstellt und in eine Textdatei eingefügt. Ich habe jedoch festgestellt, dass nicht alle Daten kopiert werden und auch viele Kommentare in den Textdaten enthalten sind, die den JSON natürlich bricht.

Ich frage mich, ob RoboMongo eine Export As JSON-Funktion hat, damit ich einen sauberen Export durchführen kann. 

Alle Hinweise werden geschätzt!

81

Sie können tojson verwenden, um jeden Datensatz in einem MongoDB-Shell-Skript in JSON zu konvertieren.

Führen Sie dieses Skript in RoboMongo aus:

var cursor = db.getCollection('foo').find({}, {});
while(cursor.hasNext()) {
    print(tojson(cursor.next()))
}

Dies druckt alle Ergebnisse als JSON-artiges Array.

Das Ergebnis ist nicht wirklich JSON! Einige Typen wie Datumsangaben und Objekt-IDs werden als JavaScript-Funktionsaufrufe ausgegeben, z. B. ISODate("2016-03-03T12:15:49.996Z").

Für große Ergebnismengen ist dies möglicherweise nicht sehr effizient, aber Sie können die Abfrage einschränken. Alternativ können Sie mongoexport verwenden.

43
Florian Winter

Die Shell-Funktionalität von Robomongo löst das Problem. In meinem Fall brauchte ich ein paar Spalten als CSV-Format. 

var cursor = db.getCollection('Member_details').find({Category: 'CUST'},{CustomerId :1,Name :1,_id:0})

while (cursor.hasNext()) {
    var record = cursor.next();   
    print(record.CustomerID + "," + record.Name)
}

Output : -------

334, Harison
433, Rechard
453, Michel
533, Pal
20
Anish Abraham

Es gibt ein paar MongoDB-GUIs, einige von ihnen bieten integrierte Unterstützung für den Datenexport. Eine umfassende Liste der MongoDB-GUIs finden Sie unter http://mongodb-tools.com

Sie haben nach dem Exportieren der Ergebnisse Ihrer Abfrage und nicht nach dem Export ganzer Sammlungen gefragt. Geben Sie 3T MongoChef MongoDB GUI a, dieses Tool unterstützt Ihren speziellen Anwendungsfall.

18
Tomek

Führen Sie diesen Befehl nicht in der Shell aus. Geben Sie dieses Skript an einer Eingabeaufforderung mit Ihrem Datenbanknamen, dem Sammlungsnamen und dem Dateinamen ein. Alle ersetzen die Platzhalter.

mongoexport --db (Database name) --collection (Collection Name) --out (File name).json

Für mich geht das.

9

Ein schneller und schmutziger Weg: Schreiben Sie einfach Ihre Abfrage als db.getCollection('collection').find({}).toArray() und klicken Sie mit der rechten Maustaste auf Copy JSON. Fügen Sie die Daten in den Editor Ihrer Wahl ein.

 enter image description here

7
öbl

sie sagen "in eine Datei exportieren" wie in einer Tabelle? wie eine .csv?

IMO Dies ist der einfachste Weg, dies in Robo 3T (ehemals Robomongo) zu tun:

  1. In der oberen rechten Ecke der Robo 3T-Benutzeroberfläche befindet sich die Schaltfläche "Ergebnisse im Text anzeigen. Modus". Klicken Sie darauf und kopieren Sie alles

  2. alles auf dieser Website einfügen: https://json-csv.com/

  3. klicken Sie auf den Download-Button und jetzt haben Sie es in einer Tabelle.

ich hoffe, das hilft jemandem, da ich wünschte, Robo 3T hätte Exportmöglichkeiten

7
russiansummer

Ich glaube nicht, dass Robomongo über eine solche Funktion verfügt. Sie sollten daher die Mongodb-Funktion besser als Mongoexport für eine bestimmte Collection verwenden.

http://docs.mongodb.org/manual/reference/program/mongoexport/#export-in-json-format

Wenn Sie jedoch nach einer Backup-Lösung suchen, ist es besser zu verwenden

mongodump / mongorestore
7
henrily

Um auf Anishs Antwort einzugehen, wollte ich etwas, das ich auf jede Abfrage anwenden kann, um alle Felder automatisch auszugeben, anstatt sie in der print-Anweisung definieren zu müssen. Es kann wahrscheinlich vereinfacht werden, aber dies war etwas schnell und schmutzig, das gut funktioniert:

var cursor = db.getCollection('foo').find({}, {bar: 1, baz: 1, created_at: 1, updated_at: 1}).sort({created_at: -1, updated_at: -1});

while (cursor.hasNext()) {
    var record = cursor.next();
    var output = "";
    for (var i in record) {
      output += record[i] + ",";
    };
    output = output.substring(0, output.length - 1);
    print(output);
}
5
Mark Shust

Wenn Sie mongoimport verwenden möchten, exportieren Sie diesen Weg:

db.getCollection('tables')
  .find({_id: 'q3hrnnoKu2mnCL7kE'})
  .forEach(function(x){printjsononeline(x)});
3
shapiromatron

Verwenden eines Robomongo-Shell-Skripts:

//on the same db
var cursor = db.collectionname.find();

while (cursor.hasNext()) {
    var record = cursor.next();   
    db.new_collectionname.save(record);
}

Verwenden des Export- und Importbefehls von Mongodb

Sie können den --jsonArray-Parameter/flag zu Ihrem mongoexport-Befehl hinzufügen. Dadurch wird das Ergebnis als einzelnes Json-Array exportiert. 

Geben Sie dann beim Importieren einfach das Flag --jsonArray erneut an. 

Oder entfernen Sie die Anfangs- und End-Array-Klammern [] in der Datei. Anschließend wird Ihre modifizierte und exportierte Datei mit dem Befehl mongoimport ohne das Flag --jsonArray importiert.

Mehr zum Export hier: https://docs.mongodb.org/manual/reference/program/mongoexport/#cmdoption--jsonArray

Importieren Sie hier: https://docs.mongodb.org/manual/reference/program/mongoimport/#cmdoption--jsonArray

2
Herald Smit

Ich hatte das gleiche Problem und das Ausführen eines Skripts in Robomongo (Robo 3T 1.1.1) erlaubt auch das Kopieren von Werten nicht und es gab auch keine Exportoption. Die beste Möglichkeit, dies zu erreichen, ist die Verwendung von mongoexport. Wenn mongodb auf Ihrem lokalen Computer installiert ist, können Sie mongoexport verwenden, um eine Verbindung zur Datenbank auf einem beliebigen Server herzustellen und Daten zu extrahieren

Um eine Verbindung zu Daten auf einem Remote-Server und zur CSV-Ausgabedatei herzustellen, führen Sie den folgenden Mongoexport in Ihrer Befehlszeile aus

mongoexport --Host HOSTNAME --port PORT --username USERNAME --password "PASSWORD" --collection COLLECTION_NAME --db DATABASE_NAME --out OUTPUTFILE.csv --type=csv --fieldFile fields.txt

fieldFile: hilft die gewünschten Spalten zu extrahieren, zB: Der Inhalt von fields.txt kann nur sein:

benutzeridentifikation

nur Werte der Spalte 'userId' extrahieren

Daten auf Remote-Server, JSON-Ausgabedatei:

mongoexport --Host HOST_NAME --port PORT --username USERNAME --password "PASSWORD" --collection COLECTION_NAME --db DATABASE_NAME --out OUTPUT.json

dadurch werden alle Felder in die Json-Datei extrahiert

daten zu localhost (mongodb sollte auf localhost laufen)

mongoexport --db DATABASE_NAME --collection COLLECTION --out OUTPUT.json

Referenz: https://docs.mongodb.com/manual/reference/program/mongoexport/#use

1

Lösung:
mongoexport --db test --collection traffic --out traffic.json

 enter image description here


woher, 
datenbank -> Mock-Server
Sammlungsname -> api_defs
Name der Ausgabedatei -> childChoreRequest.json

0
amoljdv06