MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

C'è un modo per stampare "carino" l'output della shell MongoDB su un file?

La shell fornisce alcune caratteristiche belle ma nascoste perché è un ambiente interattivo.

Quando esegui comandi da un file javascript tramite mongo command.js, non otterrai un comportamento del tutto identico.

Ci sono due modi per aggirare questo problema.

(1) falsificare la shell e far credere di essere in modalità interattiva

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

oppure
(2) usa Javascript per tradurre il risultato di un find() in un JSON stampabile

mongo dbname command.js > output.json

dove command.js contiene questo (o il suo equivalente):

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

Questo stamperà abbastanza l'array di risultati, incluso [ ] - se non lo vuoi puoi scorrere l'array e printjson() ogni elemento.

A proposito, se stai eseguendo solo una singola istruzione Javascript non devi inserirla in un file e invece puoi usare:

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