Cómo importar y exportar una base de datos MongoDB en Ubuntu 20.04
El autor seleccionó el Fondo de Ayuda COVID-19 para recibir una donación como parte del programa Write for DOnations .
Introducción
MongoDB es uno de los motores de bases de datos NoSQL más populares. Es famoso por ser escalable, potente, confiable y fácil de usar. En este artículo, le mostraremos cómo importar y exportar sus bases de datos MongoDB.
Debemos aclarar que por importación y exportación nos referimos a aquellas operaciones que manejan datos en un formato legible para humanos, compatible con otros productos de software. Por el contrario, las operaciones de backup y restauración crean o utilizan datos binarios específicos de MongoDB, que preservan la consistencia e integridad de sus datos y también sus atributos específicos de MongoDB. Por lo tanto, para la migración, generalmente es preferible utilizar backup y restauración, siempre que los sistemas de origen y destino sean compatibles.
Las tareas de copia de seguridad, restauración y migración quedan fuera del alcance de este artículo. Para obtener más información, consulte Cómo realizar copias de seguridad, restaurar y migrar una base de datos MongoDB en Ubuntu 20.04 .
Prerrequisitos
Para completar este tutorial necesitarás lo siguiente:
- Un Droplet de Ubuntu 20.04 configurado según la guía de configuración inicial del servidor de Ubuntu 20.04 , incluido un usuario sudo no root y un firewall.
- MongoDB instalado y configurado usando el artículo Cómo instalar MongoDB en Ubuntu 20.04 .
- Comprensión de las diferencias entre los datos JSON y BSON en MongoDB. Para obtener una explicación detallada, lea el Paso uno: uso de JSON y BSON en MongoDB en nuestro tutorial Cómo realizar copias de seguridad, restaurar y migrar una base de datos MongoDB en Ubuntu 20.04 .
Paso 1: Importación de información a MongoDB
Para aprender cómo funciona la importación de información a MongoDB, usemos una base de datos MongoDB de ejemplo popular sobre restaurantes. Está en formato .json y se puede descargar de wget
la siguiente manera:
- wget https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json
Una vez que se complete la descarga, debería haber un archivo llamado primer-dataset.json
(tamaño de 12 MB) en el directorio actual. Importemos los datos de este archivo a una nueva base de datos llamada newdb
y a una colección llamada restaurants
.
Utilice el mongoimport
comando de la siguiente manera:
- sudo mongoimport --db newdb --collection restaurants --file primer-dataset.json
El resultado se verá así:
Output2020-11-11T19:37:55.607+0000connected to: mongodb://localhost/2020-11-11T19:37:57.841+000025359 document(s) imported successfully. 0 document(s) failed to import
Como muestra el comando anterior, se importaron 25359 documentos. Como no teníamos una base de datos llamada newdb
, MongoDB la creó automáticamente.
Verifiquemos la importación.
Conéctese a la newdb
base de datos recién creada:
- sudo mongo newdb
Ahora está conectado a la newdb
instancia de la base de datos. Observe que el mensaje ha cambiado, lo que indica que está conectado a la base de datos.
Cuente los documentos de la colección de restaurantes con el comando:
- db.restaurants.count()
El resultado mostrará 25359
, que es la cantidad de documentos importados. Para una mejor verificación, puede seleccionar el primer documento de la colección de restaurantes de la siguiente manera:
- db.restaurants.findOne()
El resultado se verá así:
Output{"_id" : ObjectId("5fac3d937f12c471b3f26733"),"address" : {"building" : "1007","coord" : [-73.856077,40.848447],"street" : "Morris Park Ave","zipcode" : "10462"},"borough" : "Bronx","cuisine" : "Bakery","grades" : [{"date" : ISODate("2014-03-03T00:00:00Z"),"grade" : "A","score" : 2},...],"name" : "Morris Park Bake Shop","restaurant_id" : "30075445"}
Una comprobación tan detallada podría revelar problemas con los documentos, como su contenido, codificación, etc. El formato json utiliza UTF-8
codificación y sus exportaciones e importaciones deben estar en esa codificación. Tenga esto en cuenta si edita manualmente los archivos json. De lo contrario, MongoDB lo manejará automáticamente por usted.
Para salir del indicador de MongoDB, escriba exit
en el indicador:
- exit
Volverá a la línea de comandos normal como su usuario no root.
Paso 2: Exportación de información desde MongoDB
Como hemos mencionado anteriormente, al exportar la información de MongoDB puedes obtener un archivo de texto legible para humanos con tus datos. Por defecto, la información se exporta en formato json pero también puedes exportar a csv (valores separados por comas).
Para exportar información desde MongoDB, utilice el comando mongoexport
. Le permite realizar una exportación muy detallada, de modo que pueda especificar una base de datos, una colección, un campo e incluso utilizar una consulta para la exportación.
Un ejemplo sencillo mongoexport
sería exportar la colección de restaurantes de la newdb
base de datos que hemos importado previamente. Se puede hacer de la siguiente manera:
- sudo mongoexport --db newdb -c restaurants --out newdbexport.json
En el comando anterior, utilizamos --db
para especificar la base de datos, -c
para la colección y --out
para el archivo en el que se guardarán los datos.
El resultado de una operación exitosa mongoexport
debería verse así:
Output2020-11-11T19:39:57.595+0000connected to: mongodb://localhost/2020-11-11T19:39:58.619+0000[###############.........] newdb.restaurants 16000/25359 (63.1%)2020-11-11T19:39:58.871+0000[########################] newdb.restaurants 25359/25359 (100.0%)2020-11-11T19:39:58.871+0000exported 25359 records
El resultado anterior muestra que se han importado 25359 documentos, la misma cantidad que los importados.
En algunos casos, es posible que necesites exportar solo una parte de tu colección. Teniendo en cuenta la estructura y el contenido del archivo JSON de restaurantes, exportemos todos los restaurantes que cumplan con los criterios de estar ubicados en el distrito del Bronx y ofrecer cocina china. Si queremos obtener esta información directamente mientras estamos conectados a MongoDB, conéctate a la base de datos nuevamente:
- sudo mongo newdb
Luego, utiliza esta consulta:
db.restaurants.find( { "borough": "Bronx", "cuisine": "Chinese" } )
Los resultados se muestran en la terminal:
- Output2020-12-03T01:35:25.366+0000connected to: mongodb://localhost/
- 2020-12-03T01:35:25.410+0000exported 323 records
Para salir del indicador de MongoDB, escriba exit
:
- exit
Si desea exportar los datos desde una línea de comando sudo en lugar de hacerlo mientras está conectado a la base de datos, haga que la consulta anterior sea parte del mongoexport
comando especificándola para el -q
argumento de la siguiente manera:
- sudo mongoexport --db newdb -c restaurants -q "{"borough"": ""Bronx""
No related posts.
Deja una respuesta