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

Copiar/clonar una base de datos en MongoDB

En versiones anteriores de MongoDB, podía usar copyDB comando o su método auxiliar, db.copyDatabase() para copiar una base de datos.

Desde entonces, MongoDB los ha desaprobado. Además, a partir de la versión 4.2, MongoDB ha eliminado copydb comando, y por lo tanto también el db.copyDatabase() método, lo que significa que no puede usarlos incluso si quisiera si está usando MongoDB 4.2 o posterior.

Afortunadamente, hay otra forma de copiar una base de datos MongoDB.

Buscar herramientas de base de datos MongoDB

En MongoDB, puede clonar una base de datos utilizando las herramientas de base de datos de MongoDB. Específicamente, puedes usar mongodump y mongorestore .

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 si tiene instaladas las herramientas de base de datos de MongoDB, intente ejecutar los siguientes comandos en su terminal o símbolo del sistema para verificar:

mongodump --version
mongorestore --version

Eso verifica específicamente el mongodump y mongorestore versiones.

Si no los tiene, puede usar las instrucciones de instalación en el sitio web de MongoDB para instalar MongoDB Database Tools en su sistema.

Ejemplo de clonación de una base de datos

Necesitas ejecutar mongodump y mongorestore desde la línea de comandos de su sistema (por ejemplo, una nueva ventana de terminal o símbolo del sistema). No lo ejecutes desde mongo cáscara.

Aquí hay un ejemplo de código que clona una base de datos:

mongodump --archive --db=PetHotel | mongorestore --archive  --nsFrom='PetHotel.*' --nsTo='PetHouse.*'

En este caso, hacemos una copia de seguridad del PetHotel base de datos, luego restaurar todas sus colecciones a una base de datos llamada PetHouse . En otras palabras, clonamos el PetHotel base de datos como PetHouse .

Esto usa mongodump para crear un archivo de respaldo de la base de datos, luego mongorestore para restaurar esa base de datos con un nombre diferente. Hicimos esto volcando la base de datos en el flujo de salida estándar y canalizando a mongorestore .

Esto es lo que hace cada parámetro:

Parámetro Descripción
--archive Escribe la salida en un archivo de almacenamiento específico o, si el archivo de almacenamiento no está especificado, escribe en la salida estándar (stdout ). En nuestro caso, el archivo de almacenamiento no está especificado, por lo que escribió en la salida estándar.
--db Especifica una base de datos para respaldar. En este caso, hacemos una copia de seguridad del PetHotel base de datos.
--nsFrom Especifica la colección en el archivo de volcado. El comodín asterisco (* ) especifica todas las colecciones.
--nsTo Especifica el nombre de la colección que debe usarse en la base de datos restaurada.

También puedes usar mongodump para volcar todas las bases de datos. Para hacer eso simplemente ejecuta mongodump sin ningún argumento. Sin embargo, cuando haces eso, no incluye el local y config bases de datos en su volcado.