MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Existe-t-il un moyen d'imprimer "joliment" la sortie du shell MongoDB dans un fichier ?

Le shell fournit des fonctionnalités intéressantes mais cachées car il s'agit d'un environnement interactif.

Lorsque vous exécutez des commandes à partir d'un fichier javascript via mongo command.js, vous n'obtiendrez pas un comportement tout à fait identique.

Il y a deux façons de contourner cela.

(1) simulez le shell et faites-lui croire que vous êtes en mode interactif

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

ou
(2) utiliser Javascript pour traduire le résultat d'un find() dans un JSON imprimable

mongo dbname command.js > output.json

où command.js contient ceci (ou son équivalent) :

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

Cela imprimera joliment le tableau des résultats, y compris [ ] - si vous ne le souhaitez pas, vous pouvez parcourir le tableau et printjson() chaque élément.

Au fait, si vous n'exécutez qu'une seule instruction Javascript, vous n'avez pas besoin de la mettre dans un fichier et à la place, vous pouvez utiliser :

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