Las herramientas de base de datos de MongoDB incluyen una utilidad llamada mongoexport
que le permite exportar datos de MongoDB a un archivo CSV o JSON.
Una de las cosas que puede hacer con esta utilidad es exportar los resultados de la consulta. Este artículo le muestra cómo usar mongoexport
para exportar los resultados de la consulta de MongoDB a un archivo JSON.
Sintaxis
La sintaxis para mongoexport
va así:
mongoexport --collection=<coll> <options> <connection-string>
Debes ejecutar mongoexport
comandos desde la línea de comandos de su sistema (por ejemplo, una nueva ventana de terminal o símbolo del sistema).
No ejecute mongoexport
comandos del mongo
cáscara.
Ejemplo
El siguiente código de ejemplo exporta los resultados de una consulta a un archivo JSON:
mongoexport --db=PetHotel --collection=pets --query='{ "type": "Dog" }' --out=data/dogs.json
Esto exporta una consulta que consulta una colección llamada pets
en el PetHotel
base de datos. La consulta se exporta a un archivo llamado dogs.json
en los data/
carpeta.
Si la carpeta no existe, se crea. Lo mismo con el archivo. Por cierto, esto supone que no hay problemas de permisos al escribir un archivo en la ubicación especificada.
En este ejemplo, no especifiqué ningún host, puerto, autenticación, etc., por lo que exporta la colección desde la instancia de MongoDB que se ejecuta en el número de puerto de host local predeterminado 27017
.
También puede usar el --type
parámetro para especificar explícitamente JSON. El valor predeterminado es JSON, por lo que es opcional al exportar a JSON.
También puede incluir un --fields
parámetro para especificar qué campos exportar. Por defecto, exporta todos los campos cuando se usa JSON. Sin embargo, al exportar a CSV, debe especificar qué campos exportar.
Aquí hay un ejemplo del ejemplo anterior con estos dos parámetros agregados:
mongoexport --db=PetHotel --collection=pets --type=json --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.json
A continuación se muestra una explicación de los parámetros que proporcionamos aquí.
Parámetro | Descripción |
---|---|
--db o -d | Especifica la base de datos en la que ejecutar mongoexport . En este caso, la base de datos se llama PetHotel . Este parámetro se puede pasar alternativamente usando -d (en lugar de --db ). |
--collection o -c | Especifica la colección que queremos exportar (o ejecutar la consulta). En este caso, la colección se llama pets . Este parámetro se puede pasar alternativamente como -c (en lugar de --collection ). |
--type | Especifica el tipo de archivo exportado. En este caso especificamos json para exportarlo a un archivo JSON. Dado que JSON es el valor predeterminado, este parámetro es opcional al exportar a JSON. |
--fields | Especifica los campos que queremos exportar. Tenemos la opción de exportar todos los campos o solo algunos. Al exportar a JSON, especificar los nombres de los campos es opcional (es un requisito al exportar a CSV). |
--query o -q | Especifica la consulta cuyos resultados queremos exportar. Esto debe estar entre comillas simples (para que no interactúe con su shell). Este parámetro también se puede pasar usando -q . |
--out | Especifica el nombre del archivo exportado y dónde se ubicará. Si no especifica un nombre de archivo, mongoexport escribe datos en la salida estándar (stdout ). |
Comprobar el archivo exportado
Verifiquemos que la operación de exportación funcionó como se esperaba.
Primero, ejecutemos la consulta contra la colección original.
use PetHotel
db.pets.find({ "type": "Dog" })
Resultado:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 } { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
Entonces podemos ver que hay 4 perros, todos con los mismos campos que especificamos en nuestra operación de exportación.
Ahora abramos el archivo exportado dogs.json
para ver lo que hay dentro:
{"_id":1.0,"name":"Wag","type":"Dog","weight":20.0} {"_id":2.0,"name":"Bark","type":"Dog","weight":10.0} {"_id":6.0,"name":"Fetch","type":"Dog","weight":17.0} {"_id":7.0,"name":"Jake","type":"Dog","weight":30.0}
Todos los datos están en el archivo exportado como se esperaba.
Exportar menos campos
Puede especificar menos campos con --fields
parámetro si lo desea.
Ejemplo:
mongoexport --db=PetHotel --collection=pets --fields=name,weight --query='{ "type": "Dog" }' --out=data/dogs.json
Archivo resultante:
{"_id":1.0,"name":"Wag","weight":20.0} {"_id":2.0,"name":"Bark","weight":10.0} {"_id":6.0,"name":"Fetch","weight":17.0} {"_id":7.0,"name":"Jake","weight":30.0}
Notarás que el _id
El campo se incluyó en el archivo exportado, aunque no lo incluí explícitamente en --fields
argumento. Eso es porque el _id
El campo siempre se incluye al exportar a JSON, incluso cuando no lo incluye explícitamente. Este no es el caso cuando se exporta a CSV.
Control de acceso/Autenticación
Si no está usando localhost, puede usar --host
parámetro para especificar el host y --port
para especificar el puerto. También puede usar el --username
parámetro para especificar el nombre de usuario y --password
para la contraseña. Si omite el parámetro de contraseña, se le solicitará. También hay una --authenticationDatabase
parámetro para especificar la base de datos de autenticación donde se ha creado el usuario.
Ejemplo:
mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --query='{ "type": "Dog" }' --out=data/dogs.json
Busca mongoexport
mongoexport
es parte del paquete de herramientas de base de datos de MongoDB. Las herramientas de base de datos de MongoDB son un conjunto de utilidades de línea de comandos para trabajar con MongoDB.
Si no está seguro de tener MongoDB Database Tools/mongoexport
instalado, intente ejecutar el siguiente comando en su Terminal o Símbolo del sistema para verificar:
mongoexport --version
Si lo tiene, debería ver la información de la versión, etc. Si no lo tiene, puede usar las instrucciones de instalación en el sitio web de MongoDB para instalarlo en su sistema.
¿Dónde ejecutar los comandos?
No lo olvides, debes ejecutar mongoexport
comandos desde la línea de comandos de su sistema (por ejemplo, una nueva ventana de terminal o símbolo del sistema).