mongodb - que - Imprimir la salida de consulta de Mongo en un archivo mientras está en el shell mongo
mongodb español (3)
2 días de edad con Mongo y tengo un fondo SQL así que tengan paciencia conmigo. Al igual que con mysql, es muy conveniente estar en la línea de comandos de MySQL y enviar los resultados de una consulta a un archivo en la máquina. Intento entender cómo puedo hacer lo mismo con Mongo, mientras estoy en el caparazón
Puedo obtener fácilmente el resultado de una consulta que quiero al estar fuera del shell y ejecutar el siguiente comando:
mongo localhost:27017/dbname --eval "printjson(db.collectionName.findOne())" >> sample.json
La forma anterior está bien, pero me requiere salir de la consola mongo o abrir una nueva pestaña terminal para ejecutar este comando. Sería muy conveniente si pudiera hacer esto sin dejar de estar dentro del caparazón.
PD: la pregunta es una derivación de una pregunta que publiqué en SO
Si invoca el shell con script-file, db address y --quiet arguments, puede redirigir el resultado (hecho con print () por ejemplo) a un archivo:
mongo localhost/mydatabase --quiet myScriptFile.js > output
AFAIK, no hay una opción interactiva para la salida al archivo, hay una pregunta SO anterior relacionada con esto: Imprimir la salida del shell mongodb en el archivo
Sin embargo, puede registrar toda la sesión de shell si invoca el shell con el comando tee:
$ mongo | tee file.txt
MongoDB shell version: 2.4.2
connecting to: test
> printjson({this: ''is a test''})
{ "this" : "is a test" }
> printjson({this: ''is another test''})
{ "this" : "is another test" }
> exit
bye
Luego obtendrás un archivo con este contenido:
MongoDB shell version: 2.4.2
connecting to: test
> printjson({this: ''is a test''})
{ "this" : "is a test" }
> printjson({this: ''is another test''})
{ "this" : "is another test" }
> exit
bye
Para eliminar todos los comandos y conservar solo la salida json, puede usar un comando similar a:
tail -n +3 file.txt | egrep -v "^>|^bye" > output.json
Entonces obtendrás:
{ "this" : "is a test" }
{ "this" : "is another test" }
Puede ser útil para usted simplemente aumentar la cantidad de resultados que se muestran
En el shell de mongo>
DBQuery.shellBatchSize = 3000
y luego puede seleccionar todos los resultados fuera de la terminal de una vez y pegarlos en un archivo de texto.
Es lo que voy a hacer :)
(desde: https://.com/a/3705615/1290746 )