Cómo obtener los resultados del comando mongo en un archivo plano


Cómo puedo exportar los resultados de un comando MongoDB a un archivo plano

Por ejemplo, si voy a obtener db.collectionname.find() en un archivo plano.

He intentado db.collectionname.find() >> "test.txt" no parece funcionar.

Author: NullUserException, 2012-10-10

6 answers

Puede intentar lo siguiente desde la línea de comandos

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

Suponiendo que tenga una base de datos llamada 'db' ejecutándose en localhost y una colección llamada 'collection', esto exportará todos los registros a un archivo llamado test.txt

Si tiene un script más largo que desea ejecutar, también puede crear un script.archivo js y solo use

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

Espero que esto ayude

 65
Author: peshkira,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-10 16:33:43

No sé cómo hacerlo directamente desde el shell de mongo, pero puedes hacer que mongoexport ejecute consultas y envíe los resultados a un archivo con las opciones-q y-o:

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

Las visitas anteriores consultan a la colección de perfiles en la base de datos de modelos tomando el documento JSON para _id = "MRD641000". Funciona para mí.

 15
Author: Bob Kuhar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-10 16:31:47

Usa esto

mongo db_name --username user --password password < query1.js >> result.txt
 7
Author: Piotr Fryga,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-28 12:48:06

Habiendo perdido la base de datos que necesita ser la base de datos real en la respuesta de Peshkira, aquí hay una sintaxis general para un trazador de líneas en shell (asumiendo que no hay contraseña):

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

Lo probé tanto en mi mac como en Google Cloud Ubuntu 15 con Mongo 3+.

 1
Author: goggelj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-02 10:14:17
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
Author: DarwinFernandez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-16 06:16:07

Mongoexport db db db_name collection collection collection_name csv csvname out file_name.csv -f campo1,campo2, campo3

 -1
Author: Arnab Ghosh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-22 18:48:46