109 votes

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

Plus précisément, je veux imprimer les résultats d'un mongodb find() à un fichier. L'objet JSON est trop volumineux et je ne suis pas en mesure de l'afficher dans son intégralité avec la taille de la fenêtre du shell.

6voto

Pavel_H Points 320

J'ai réussi à sauver le résultat avec writeFile() función.

> writeFile("/home/pahan/output.txt", tojson(db.myCollection.find().toArray()))

La version du shell Mongo était 4.0.9

2voto

margaretkru Points 1565

En utilisant cette réponse de Asya Kamsky, j'ai écrit un bat script d'une ligne pour Windows. La ligne ressemble à ceci :

mongo --quiet %1 --eval "printjson(db.%2.find().toArray())" > output.json

Alors on peut l'exécuter :

exportToJson.bat DbName CollectionName

2voto

James Yang Points 86

Dans le nouveau mongodb shell 5.0+ mongosh il intègre le Module fs de Node.js pour que vous puissiez tout simplement faire ci-dessous dans la nouvelle mongosh shell pour imprimer joliment la sortie :

fs.writeFileSync('output.json', JSON.stringify(db.test.find().toArray(), null, 2))

Sans aucun problème tel que le ObjectId a été dépouillé, etc., ce qui est mieux que la printjson o .pretty() .

Le code ci-dessus peut fonctionner comme la description l'indique :

L'interpréteur de commandes MongoDB, mongosh, est une REPL JavaScript et Node.js 14.x entièrement fonctionnel pour interagir avec les déploiements MongoDB. Vous pouvez utiliser le shell MongoDB pour tester les requêtes et les opérations directement avec votre base de données.

L'ancien mongo coquille également marquée comme Héritage donc vous devez passer à cette nouvelle façon de faire.

1voto

Neodan Points 4047

Il y a aussi mongoexport pour cela, mais je ne suis pas sûr depuis quelle version il est disponible.

Ejemplo:

mongoexport -d dbname -c collection --jsonArray --pretty --quiet --out output.json

1voto

Nhan D Le Points 49

Comme réponse par Neodan mongoexport est très utile avec -q option pour la requête. Il convertit également ObjectId au format standard de JSON "$oid" . Par exemple

mongoexport -d yourdb -c yourcol --jsonArray --pretty -q '{"field": "filter value"}' -o output.json

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X