sql >> Base de Datos >  >> NoSQL >> MongoDB

Exportar una colección MongoDB a un archivo JSON

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.

Este artículo le muestra cómo usar mongoexport para exportar una colección 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.

Exportar una colección

El siguiente código de ejemplo exporta una colección de MongoDB a un archivo JSON:

mongoexport --db=PetHotel --collection=pets --out=data/pets.json

Esto exporta una colección llamada pets del PetHotel base de datos a un archivo llamado pets.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 .

El ejemplo anterior también podría escribirse así:

mongoexport --db=PetHotel --collection=pets --type=json --fields=_id,name,type,weight --out=data/pets.json

En este caso agregamos el --type parámetro y un --fields parámetro para especificar qué campos incluir en el archivo 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 que contiene la colección que queremos exportar. 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. 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. json es el valor predeterminado, por lo que si no especificamos este parámetro, el archivo se genera como un archivo JSON.
--fields Especifica los campos que queremos exportar. Tenemos la opción de exportar todos los campos de la colección, o solo algunos. Separe varios nombres de campo con una coma. Al exportar a JSON, especificar nombres de campo es opcional (a diferencia de CSV).
--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, revisemos la colección original.

use PetHotel
db.pets.find()

Resultado:

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
{ "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
{ "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }

Entonces podemos ver que hay 7 mascotas, todas con los mismos campos que especificamos en nuestra operación de exportación.

Ahora abramos el archivo exportado pets.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":3.0,"name":"Meow","type":"Cat","weight":7.0}
{"_id":4.0,"name":"Scratch","type":"Cat","weight":8.0}
{"_id":5.0,"name":"Bruce","type":"Bat","weight":3.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.

Menos campos

Puede usar los --fields parámetro para especificar qué campos desea exportar.

Cuando hace esto en archivos JSON, el _id el campo siempre se exporta (incluso cuando no lo incluye en la lista de campos para exportar).

Ejemplo:

mongoexport --db=PetHotel --collection=pets --fields=name,type --out=data/pets.json

En este caso especifico dos campos para exportar.

Cuando abro el archivo exportado, puedo ver que ambos campos están exportados, más el _id campo:

{"_id":1.0,"name":"Wag","type":"Dog"}
{"_id":2.0,"name":"Bark","type":"Dog"}
{"_id":3.0,"name":"Meow","type":"Cat"}
{"_id":4.0,"name":"Scratch","type":"Cat"}
{"_id":5.0,"name":"Bruce","type":"Bat"}
{"_id":6.0,"name":"Fetch","type":"Dog"}
{"_id":7.0,"name":"Jake","type":"Dog"}

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 --out=data/pets.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).

No los ejecutes desde mongo cáscara.