Copiar/clonar una base de datos en MongoDB
-
Utilice el comando
db.collection.copyTo()
para copiar/clonar una base de datos en MongoDB -
Utilice el comando
db.collection.find().forEach()
para copiar/clonar una base de datos en MongoDB -
Utilice las herramientas
mongodump
ymongorestore
para copiar/clonar una base de datos en MongoDB -
Utilice las herramientas
mongoexport
ymongoimport
para copiar/clonar una base de datos en MongoDB - Herramienta de recopilación de duplicados de NoSQL Manager para MongoDB
- Copie la colección a otra herramienta de base de datos de NoSQL Manager para 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")
- Este comando solo se puede ejecutar en MongoDB 4.0 o versiones anteriores.
- Clona la colección solo en la misma base de datos.
- Es extremadamente lento.
- 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);
})
- Este comando puede clonar una colección solo en el mismo servidor.
- Es muy lento.
- 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.
- Es un método de alta velocidad.
- 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
- Es un método rápido.
- Puede clonar colecciones en una base de datos y un servidor diferentes.
- 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.
Especifique el nombre de la colección de destino, los parámetros de duplicación y haga clic en Duplicar.
- Es un método de alta velocidad.
- Copia propiedades e índices de la colección.
- 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.
Especifique la base de datos de destino y los parámetros adicionales y haga clic en Ejecutar.
- Es un método rápido.
- Copia propiedades e índices de la colección.
- Puede copiar la colección a otra base de datos y servidor.
- Puede copiar varias colecciones a la vez.
- No se puede cambiar el nombre de la colección.