Shell poskytuje některé pěkné, ale skryté funkce, protože se jedná o interaktivní prostředí.
Když spouštíte příkazy ze souboru javascript přes mongo commands.js, nedosáhnete zcela identického chování.
Existují dva způsoby, jak to obejít.
(1) předstírejte shell a přimějte jej, aby si myslel, že jste v interaktivním režimu
$ mongo dbname << EOF > output.json
db.collection.find().pretty()
EOF
nebo
(2) použijte Javascript k překladu výsledku find()
do tisknutelného JSON
mongo dbname command.js > output.json
kde command.js obsahuje toto (nebo jeho ekvivalent):
printjson( db.collection.find().toArray() )
To pěkně vytiskne pole výsledků, včetně [ ]
- pokud to nechcete, můžete pole iterovat a printjson()
každý prvek.
Mimochodem, pokud spouštíte pouze jeden příkaz Javascript, nemusíte jej vkládat do souboru a místo toho můžete použít:
$ mongo --quiet dbname --eval 'printjson(db.collection.find().toArray())' > output.json