it-swarm.com.de

Wie man den Mongo-Befehl erhält, führt zu einer flachen Datei

Wie exportiere ich die Ergebnisse eines MongoDB-Befehls in eine flache Datei?

Zum Beispiel, wenn ich db.collectionname.find() in eine flache Datei bekommen soll.

Ich habe versucht, db.collectionname.find() >> "test.txt" scheint nicht zu funktionieren.

41
QVSJ

sie können Folgendes von der Befehlszeile aus versuchen

mongo 127.0.0.1/db --eval "var c = db.collection.find(); while(c.hasNext()) {printjson(c.next())}" >> test.txt

vorausgesetzt, Sie haben eine Datenbank namens 'db', die auf localhost ausgeführt wird, und eine Sammlung namens 'collection'. Dadurch werden alle Datensätze in eine Datei namens test.txt exportiert

Wenn Sie ein längeres Skript haben, das Sie ausführen möchten, können Sie auch eine script.js-Datei Erstellen und es einfach verwenden

mongo 127.0.0.1/db script.js >> test.txt

Ich hoffe das hilft

67
peshkira

Ich kenne keine Möglichkeit, dies direkt von der Mongo-Shell aus zu tun, aber Sie können mongoexport dazu bringen, Abfragen auszuführen und die Ergebnisse mit den Optionen -q und -o an eine Datei zu senden:

mongoexport -h mongo.dev.priv -d models -c profiles -q '{ $query : { _id : "MRD461000" } }' -o MRD_Series1.json

Bei den obigen Treffern wird die Profilsammlung in der Modelldatenbank abgefragt und das JSON-Dokument für _id = "MRD641000" abgerufen. Funktioniert bei mir.

17
Bob Kuhar

Benutze das

mongo db_name --username user --password password < query1.js >> result.txt
7
Piotr Fryga

Nachdem Sie die DB in Peshkiras Antwort verpasst haben müssen, ist die allgemeine Syntax für einen One-Liner in Shell (wenn kein Passwort angenommen wird):

mongo <Host>:<db name> --eval "var x = <db name>.<collection name>.<query>; while(x.hasNext()) { printjson( x.next() ) }" >> out.txt

Ich habe es sowohl auf meinem Mac als auch auf Google Cloud Ubuntu 15 mit Mongo 3+ getestet.

1
goggelj

versuchen Sie dies - geben Sie eine Json-Datei mit den Daten der Abfrage zurück. Sie können .json für TXT und andere Dateien ändern.

mongoexport --db products --collection clicks --query '{"createdInt": {$ gte: 20190101}, "clientId": "123", "country": "ES"}' --out clicks-2019.json

0
amic
mongoexport --Host 127.0.0.1 --port 27017 --username youruser -p yourpass \
   -d yourDatabaseName -c collectionName --type csv \
   --fields field1,field2 -q '{"field1" : 1495730914381}' \
   --out report.csv
0
DarwinFernandez