mongodb - query - mongoexport
Cómo exportar json de Mongodb usando robomongo (13)
Usando un script de shell robomongo:
//on the same db
var cursor = db.collectionname.find();
while (cursor.hasNext()) {
var record = cursor.next();
db.new_collectionname.save(record);
}
Usando el comando de exportación e importación de mongodb
Puede agregar el parámetro /
--jsonArray
a su comando
mongoexport
, esto exporta el resultado como una sola matriz json.
Luego solo especifique el indicador
--jsonArray
nuevamente al importar.
O elimine los corchetes iniciales y finales de la matriz [] en el archivo, luego su archivo modificado y exportado se importará con el comando
mongoimport
sin la bandera
--jsonArray
.
Más sobre Exportar aquí: https://docs.mongodb.org/manual/reference/program/mongoexport/#cmdoption--jsonArray
Importa aquí: https://docs.mongodb.org/manual/reference/program/mongoimport/#cmdoption--jsonArray
Entonces no sé mucho sobre
MongoDB
.
Tengo
RoboMongo
con el que me conecto a un MongoDB.
Lo que necesito hacer es esto: hay una colección en ese MongoDB.
Quiero exportar los datos de esa colección para poder guardarlos en un archivo.
Usé la interfaz para abrir los datos de la colección como texto e hice un
CTRL + A
y lo pegué en un archivo de texto.
Sin embargo, descubrí que no todos los datos se copian y también que había muchos comentarios en los datos de texto que naturalmente rompen el JSON.
Me pregunto si RoboMongo tiene una instalación
Export As JSON
para poder hacer una exportación limpia.
Cualquier puntero es apreciado!
- haz tu búsqueda
- resultados de la vista del botón en modo JSON
- copiar el resultado a la palabra
- imprimir el resultado de word
Ampliando la respuesta de Anish, quería algo que pueda aplicar a cualquier consulta para generar automáticamente todos los campos en lugar de tener que definirlos dentro de la declaración de impresión. Probablemente se pueda simplificar, pero esto fue algo rápido y sucio que funciona muy bien:
var cursor = db.getCollection(''foo'').find({}, {bar: 1, baz: 1, created_at: 1, updated_at: 1}).sort({created_at: -1, updated_at: -1});
while (cursor.hasNext()) {
var record = cursor.next();
var output = "";
for (var i in record) {
output += record[i] + ",";
};
output = output.substring(0, output.length - 1);
print(output);
}
Existen algunas GUI de MongoDB, algunas de ellas tienen soporte incorporado para la exportación de datos. Encontrará una lista completa de las GUI de MongoDB en http://mongodb-tools.com
Ha preguntado sobre exportar los resultados de su consulta y no sobre exportar colecciones completas. Pruebe 3T MongoChef MongoDB GUI , esta herramienta tiene soporte para su caso de uso específico.
La funcionalidad de shell de Robomongo resolverá el problema. En mi caso, necesitaba un par de columnas como formato CSV.
var cursor = db.getCollection(''Member_details'').find({Category: ''CUST''},{CustomerId :1,Name :1,_id:0})
while (cursor.hasNext()) {
var record = cursor.next();
print(record.CustomerID + "," + record.Name)
}
Output : -------
334, Harison
433, Rechard
453, Michel
533, Pal
No creo que el robomongo tenga tal característica. Por lo tanto, es mejor usar la función mongodb como mongoexport para una Colección específica.
http://docs.mongodb.org/manual/reference/program/mongoexport/#export-in-json-format
Pero si está buscando una solución de respaldo, es mejor usar
mongodump / mongorestore
No ejecute este comando en el shell, ingrese este script en el símbolo del sistema con el nombre de su base de datos, el nombre de la colección y el nombre del archivo, todos reemplazando los marcadores de posición.
mongoexport --db (Database name) --collection (Collection Name) --out (File name).json
Esto funciona para mi.
Puede usar
tojson
para convertir cada registro a JSON en un
script de shell MongoDB
.
Ejecute este script en RoboMongo:
var cursor = db.getCollection(''foo'').find({}, {});
while(cursor.hasNext()) {
print(tojson(cursor.next()))
}
Esto imprime todos los resultados como una matriz similar a JSON.
¡El resultado no es realmente JSON!
Algunos tipos, como fechas e ID de objetos, se imprimen como llamadas a funciones de JavaScript, por ejemplo,
ISODate("2016-03-03T12:15:49.996Z")
.
Puede que no sea muy eficiente para grandes conjuntos de resultados, pero puede limitar la consulta.
Alternativamente, puede usar
mongoexport
.
Si desea usar mongoimport , querrá exportar de esta manera:
db.getCollection(''tables'')
.find({_id: ''q3hrnnoKu2mnCL7kE''})
.forEach(function(x){printjsononeline(x)});
Tuve este mismo problema, y ejecutar script en robomongo (Robo 3T 1.1.1) tampoco permite copiar valores y tampoco había opción de exportación. La mejor manera de lograr esto es usar mongoexport, si mongodb está instalado en su local, puede usar mongoexport para conectarse a la base de datos en cualquier servidor y extraer datos
Para conectarse a los datos en el servidor remoto y al archivo de salida csv, ejecute el siguiente mongoexport en su línea de comando
mongoexport --host HOSTNAME --port PORT --username USERNAME --password "PASSWORD" --collection COLLECTION_NAME --db DATABASE_NAME --out OUTPUTFILE.csv --type=csv --fieldFile fields.txt
fieldFile: ayuda a extraer las columnas deseadas, por ejemplo: el contenido de fields.txt puede ser solo:
ID de usuario
para extraer solo valores de la columna ''userId''
Datos en el servidor remoto, archivo de salida json:
mongoexport --host HOST_NAME --port PORT --username USERNAME --password "PASSWORD" --collection COLECTION_NAME --db DATABASE_NAME --out OUTPUT.json
esto extrae todos los campos en el archivo json
datos en localhost (mongodb debería ejecutarse en localhost)
mongoexport --db DATABASE_NAME --collection COLLECTION --out OUTPUT.json
Referencia: https://docs.mongodb.com/manual/reference/program/mongoexport/#use
dices "exportar a archivo" como en una hoja de cálculo? como un .csv?
OMI, esta es la forma MÁS FÁCIL de hacer esto en Robo 3T (anteriormente robomongo):
-
En la esquina superior derecha de la interfaz gráfica de usuario de Robo 3T hay un botón "Ver resultados en modo de texto", haga clic en él y copie todo
-
pegue todo en este sitio web: https://json-csv.com/
-
haz clic en el botón de descarga y ahora lo tienes en una hoja de cálculo.
Espero que esto ayude a alguien, ya que me gustaría que Robo 3T tuviera capacidades de exportación