Skallen giver nogle gode, men skjulte funktioner, fordi det er et interaktivt miljø.
Når du kører kommandoer fra en javascript-fil via mongo commands.js, får du ikke helt identisk adfærd.
Der er to måder at undgå dette på.
(1) forfalske skallen og få den til at tro, at du er i interaktiv tilstand
$ mongo dbname << EOF > output.json
db.collection.find().pretty()
EOF
eller
(2) brug Javascript til at oversætte resultatet af en find()
til en printbar JSON
mongo dbname command.js > output.json
hvor command.js indeholder dette (eller tilsvarende):
printjson( db.collection.find().toArray() )
Dette vil ret udskrive rækken af resultater, inklusive [ ]
- hvis du ikke ønsker det, kan du iterere over arrayet og printjson()
hvert element.
Forresten, hvis du kun kører en enkelt Javascript-sætning, behøver du ikke at lægge den i en fil, og i stedet kan du bruge:
$ mongo --quiet dbname --eval 'printjson(db.collection.find().toArray())' > output.json