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.
Réponses
Trop de publicités?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
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.
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