Обвивката предоставя някои хубави, но скрити функции, защото е интерактивна среда.
Когато изпълнявате команди от javascript файл чрез mongo commands.js, няма да получите съвсем идентично поведение.
Има два начина да заобиколите това.
(1) фалшифицирайте обвивката и я накарайте да мисли, че сте в интерактивен режим
$ mongo dbname << EOF > output.json
db.collection.find().pretty()
EOF
или
(2) използвайте Javascript, за да преведете резултата от find()
в JSON за печат
mongo dbname command.js > output.json
където command.js съдържа това (или негов еквивалент):
printjson( db.collection.find().toArray() )
Това доста ще отпечата масива от резултати, включително [ ]
- ако не искате това можете да повторите през масива и printjson()
всеки елемент.
Между другото, ако изпълнявате само един израз на Javascript, не е нужно да го поставяте във файл и вместо това можете да използвате:
$ mongo --quiet dbname --eval 'printjson(db.collection.find().toArray())' > output.json