De shell biedt een aantal leuke maar verborgen functies omdat het een interactieve omgeving is.
Wanneer u opdrachten uitvoert vanuit een javascript-bestand via mongo commands.js, krijgt u niet helemaal hetzelfde gedrag.
Er zijn twee manieren om dit te omzeilen.
(1) nep de schaal en laat het denken dat je in de interactieve modus bent
$ mongo dbname << EOF > output.json
db.collection.find().pretty()
EOF
of
(2) gebruik Javascript om het resultaat van een find()
. te vertalen in een afdrukbare JSON
mongo dbname command.js > output.json
waar command.js dit (of het equivalent daarvan) bevat:
printjson( db.collection.find().toArray() )
Dit zal de reeks resultaten behoorlijk afdrukken, inclusief [ ]
- als je dat niet wilt, kun je de array herhalen en printjson()
elk element.
Trouwens, als je maar één Javascript-statement gebruikt, hoef je het niet in een bestand te plaatsen, maar kun je het volgende gebruiken:
$ mongo --quiet dbname --eval 'printjson(db.collection.find().toArray())' > output.json