Copiar/clonar una base de datos en MongoDB

Tahseen Tauseef 15 febrero 2024
  1. Utilice el comando db.collection.copyTo() para copiar/clonar una base de datos en MongoDB
  2. Utilice el comando db.collection.find().forEach() para copiar/clonar una base de datos en MongoDB
  3. Utilice las herramientas mongodump y mongorestore para copiar/clonar una base de datos en MongoDB
  4. Utilice las herramientas mongoexport y mongoimport para copiar/clonar una base de datos en MongoDB
  5. Herramienta de recopilación de duplicados de NoSQL Manager para MongoDB
  6. Copie la colección a otra herramienta de base de datos de NoSQL Manager para MongoDB
Copiar/clonar una base de datos en MongoDB

Hay varias formas a través de las cuales el usuario puede clonar una colección dentro de la misma o en una base de datos MongoDB diferente. Este artículo tutorial de MongoDB discutirá cómo el usuario puede copiar/clonar una base de datos en MongoDB y sus datos.

Utilice el comando db.collection.copyTo() para copiar/clonar una base de datos en MongoDB

Este comando utiliza JavaScript del lado del servidor para copiar todos los documentos de colección a nuevaColección. MongoDB genera una nueva colección si no existe.

Debe tener todas las acciones en todos los recursos para ejecutar db.collection.copyTo() si el permiso está habilitado. Si su negocio requiere que un usuario ejecute db.collection.copyTo(), cree un rol que otorgue anyAction en anyResource.

No se debe asignar este rol a ningún otro usuario.

Parámetro Tipo Descripción
newCollection cadena El nombre de la colección donde se escriben los datos.

Verifique los tipos de campo mientras usa db.collection.copyTo() para verificar que la operación no elimine la información de tipo de los documentos durante la conversión de BSON a JSON.

Internamente, el comando eval es utilizado por el método db.collection.copyTo(). Como resultado, la operación db.collection.copyTo() toma un bloqueo global, lo que evita cualquier otra actividad de lectura o escritura hasta que finalice la operación db.collection.copyTo().

El número de documentos copiados es devuelto por copyTo(). Si la copia falla, se lanza una excepción. Debido a que copyTo() usa eval internamente, las acciones de copia en la instancia mongod bloquearán todas las demás operaciones.

Por ejemplo, la siguiente operación copia todos los documentos de la colección origen en la colección destino.

db.collection1.copyTo("collection2")
  1. Este comando solo se puede ejecutar en MongoDB 4.0 o versiones anteriores.
  2. Clona la colección solo en la misma base de datos.
  3. Es extremadamente lento.
  4. No copia las propiedades e índices de la colección.

Utilice el comando db.collection.find().forEach() para copiar/clonar una base de datos en MongoDB

Este comando itera a través del cursor, aplicando una función de JavaScript a cada documento. La forma prototipo del método forEach() es la siguiente:

db.collection.find().forEach(<function>)

El método forEach() tiene el siguiente parámetro:

Parámetro Tipo Descripción
function JavaScript Una función de JavaScript para aplicar a cada documento desde el cursor. La firma <function> incluye un único argumento que se pasa al documento actual para procesar.

Ejemplo:

db.collection1.find().forEach(
function(docs){
db.collection2.insert(docs);
})
  1. Este comando puede clonar una colección solo en el mismo servidor.
  2. Es muy lento.
  3. No copia las propiedades e índices de la colección.

Utilice las herramientas mongodump y mongorestore para copiar/clonar una base de datos en MongoDB

Para duplicar una base de datos en versiones anteriores de MongoDB, puede usar el comando copyDB o su método auxiliar, db.copyDatabase(). Sin embargo, MongoDB los ha desaprobado posteriormente.

Además, a partir de la versión 4.2, MongoDB eliminó el comando copydb y el método db.copyDatabase(), por lo que si está utilizando MongoDB 4.2 o posterior, no podrá utilizarlos. Sin embargo, existe un enfoque diferente para duplicar una base de datos MongoDB.

Las herramientas de base de datos de MongoDB se pueden utilizar para clonar una base de datos en MongoDB. Puede utilizar los comandos mongodump y mongorestore.

MongoDB Database Tools es una colección de herramientas de línea de comandos para trabajar con MongoDB. Si no está seguro de tener instaladas las herramientas de base de datos de MongoDB, use su terminal o el símbolo del sistema para verificar:

mongodump --version
mongorestore --version

Este código busca principalmente las versiones de mongodump y mongorestore.. Si aún no las tiene, puede instalar MongoDB Database Tools en su PC siguiendo las instrucciones de instalación que se encuentran en el sitio web de MongoDB.

Debe utilizar la línea de comandos de su sistema para ejecutar mongodump y mongorestore (por ejemplo, una nueva ventana de terminal o símbolo del sistema). No debe ejecutarse desde el shell mongo.

Aquí hay un ejemplo de código de clonación de base de datos:

mongodump --archive --db=CatHotel | mongorestore --archive  --nsFrom='CatHotel.*' --nsTo='CatHouse.*'

En este caso, hacemos una copia de seguridad de la base de datos CatHotel, luego restauramos todas sus colecciones a una base de datos llamada CatHouse. En otras palabras, clonamos la base de datos CatHotel como CatHouse.

Esto usa mongodump para producir un archivo de copia de seguridad de la base de datos, seguido de mongorestore para restaurar la base de datos con un nuevo nombre. Primero, la base de datos se volcó en el flujo de salida estándar y se canalizó a mongorestore.

Esto es lo que hace cada parámetro:

Parámetro Descripción
archive Escribirá la salida en un archivo de almacenamiento especificado o en la salida estándar (stdout) si el archivo de almacenamiento no está especificado. En su caso, el archivo de almacenamiento no está especificado, por lo que escribirá en la salida estándar.
db Especificará una base de datos para respaldar. En este caso, harás una copia de seguridad de la base de datos CatHotel.
nsFrom Especificará la colección en el archivo de volcado. El comodín asterisco (*) significa todas las colecciones.
nsTo Especifica el nombre de la colección que debe usarse en la base de datos restaurada.

También puede volcar todas las bases de datos con mongodump y ejecutarlo sin ningún parámetro. Sin embargo, las bases de datos local y config no se incluyen en el volcado cuando lo hace.

  1. Es un método de alta velocidad.
  2. Puede clonar colecciones a otra base de datos y servidor.

Utilice las herramientas mongoexport y mongoimport para copiar/clonar una base de datos en MongoDB

El paquete de herramientas MongoDB incluye las herramientas mongoexport y mongoimport. El paquete de herramientas está disponible para su descarga desde el Centro de descargas de MongoDB.

Por ejemplo, ejecute el siguiente comando en la línea de comando:

mongoexport.exe /host:<host> /port:<port> /db:test /collection:collection1 /out:collection1.json
mongoimport.exe /host:<host> /port:<port> /db:test /collection:collection2 /file:collection1.json
  1. Es un método rápido.
  2. Puede clonar colecciones en una base de datos y un servidor diferentes.
  3. No copia las propiedades e índices de la colección.

Herramienta de recopilación de duplicados de NoSQL Manager para MongoDB

Duplicate Collection es una característica profesional. Permite duplicar la colección muy rápidamente dentro de la misma base de datos.

Haga clic con el botón derecho en la colección colección1 en DB Explorer y seleccione Duplicar elemento de colección colección1 en el menú emergente.

Colección duplicada

Especifique el nombre de la colección de destino, los parámetros de duplicación y haga clic en Duplicar.

Colección duplicada 1

  1. Es un método de alta velocidad.
  2. Copia propiedades e índices de la colección.
  3. Solo puede clonar colecciones en la misma base de datos.

Copie la colección a otra herramienta de base de datos de NoSQL Manager para MongoDB

Copiar colección a otra base de datos es una característica profesional de NoSQL Manager para MongoDB Pro. Permite copiar una o varias colecciones entre bases de datos y servidores.

Haga clic con el botón derecho en colección1 en DB Explorer y seleccione Copiar colección1 Colección a otro elemento de base de datos en el menú emergente.

Colección duplicada 2

Especifique la base de datos de destino y los parámetros adicionales y haga clic en Ejecutar.

Colección duplicada 3

  1. Es un método rápido.
  2. Copia propiedades e índices de la colección.
  3. Puede copiar la colección a otra base de datos y servidor.
  4. Puede copiar varias colecciones a la vez.
  5. No se puede cambiar el nombre de la colección.

Artículo relacionado - MongoDB Database