sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Hay alguna manera de imprimir 'bonitamente' la salida del shell MongoDB en un archivo?

El shell proporciona algunas características agradables pero ocultas porque es un entorno interactivo.

Cuando ejecuta comandos desde un archivo javascript a través de mongo commands.js, no obtendrá un comportamiento idéntico.

Hay dos formas de evitar esto.

(1) falsifica el caparazón y haz que crea que estás en modo interactivo

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

o
(2) use Javascript para traducir el resultado de un find() en un JSON imprimible

mongo dbname command.js > output.json

donde command.js contiene esto (o su equivalente):

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

Esto imprimirá bastante la matriz de resultados, incluido [ ] - si no quiere eso, puede iterar sobre la matriz y printjson() cada elemento.

Por cierto, si está ejecutando solo una declaración de Javascript, no tiene que ponerla en un archivo y, en su lugar, puede usar:

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