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

Gibt es eine Möglichkeit, die MongoDB-Shell-Ausgabe "hübsch" in eine Datei zu drucken?

Die Shell bietet einige nette, aber versteckte Funktionen, da es sich um eine interaktive Umgebung handelt.

Wenn Sie Befehle aus einer Javascript-Datei über mongo commands.js ausführen, erhalten Sie kein ganz identisches Verhalten.

Es gibt zwei Möglichkeiten, dies zu umgehen.

(1) die Shell vortäuschen und ihr glauben machen, dass Sie sich im interaktiven Modus befinden

$ mongo dbname << EOF > output.json
db.collection.find().pretty()
EOF

oder
(2) Javascript verwenden, um das Ergebnis eines find() zu übersetzen in ein druckbares JSON

mongo dbname command.js > output.json

wobei command.js dies (oder sein Äquivalent) enthält:

printjson( db.collection.find().toArray() )

Dadurch wird das Array der Ergebnisse, einschließlich [ ], hübsch gedruckt - Wenn Sie das nicht möchten, können Sie über das Array iterieren und printjson() jedes Element.

Übrigens, wenn Sie nur eine einzelne Javascript-Anweisung ausführen, müssen Sie sie nicht in eine Datei einfügen und können stattdessen verwenden:

$ mongo --quiet dbname --eval 'printjson(db.collection.find().toArray())' > output.json