web-dev-qa-db-fra.com

Comment obtenir la commande mongo donne un fichier plat

Comment exporter les résultats d'une commande MongoDB dans un fichier à plat

Par exemple, si je veux obtenir db.collectionname.find() dans un fichier à plat.

J'ai essayé db.collectionname.find() >> "test.txt" ne semble pas fonctionner.

41
QVSJ

vous pouvez essayer ce qui suit à partir de la ligne de commande

mongo 127.0.0.1/db --eval "var c = db.collection.find(); while(c.hasNext()) {printjson(c.next())}" >> test.txt

en supposant que vous avez une base de données appelée 'db' s'exécutant sur localhost et une collection appelée 'collection', cela exportera tous les enregistrements dans un fichier appelé test.txt

Si vous souhaitez exécuter un script plus long, vous pouvez également créer un fichier script.js .__ et simplement utiliser

mongo 127.0.0.1/db script.js >> test.txt

J'espère que ça aide

67
peshkira

Je ne connais aucun moyen de le faire directement depuis le shell mongo, mais vous pouvez obtenir que mongoexport exécute des requêtes et envoie les résultats dans un fichier avec les options -q et -o:

mongoexport -h mongo.dev.priv -d models -c profiles -q '{ $query : { _id : "MRD461000" } }' -o MRD_Series1.json

La requête ci-dessus interroge la collection de profils dans la base de données de modèles en récupérant le document JSON pour _id = "MRD641000". Travaille pour moi.

17
Bob Kuhar

Utilisez ceci

mongo db_name --username user --password password < query1.js >> result.txt
7
Piotr Fryga

Après avoir manqué la base de données qui doit être la base de données dans la réponse de Peshkira, voici une syntaxe générale pour une ligne dans Shell (en supposant qu'aucun mot de passe ne soit utilisé):

mongo <Host>:<db name> --eval "var x = <db name>.<collection name>.<query>; while(x.hasNext()) { printjson( x.next() ) }" >> out.txt

Je l'ai testé à la fois sur mon Mac et sur le cloud Google Ubuntu 15 avec Mongo 3+.

1
goggelj

try this - retournez un fichier JSON avec les données de la requête, vous pouvez modifier .json pour .txt et autres.

mongoexport --db produits - clics de collecte - requête '{"createdInt": {$ gte: 20190101}, "clientId": "123", "pays": "ES"} - tous les clics-2019.json

0
amic
mongoexport --Host 127.0.0.1 --port 27017 --username youruser -p yourpass \
   -d yourDatabaseName -c collectionName --type csv \
   --fields field1,field2 -q '{"field1" : 1495730914381}' \
   --out report.csv
0
DarwinFernandez