Copie una colección dentro de la misma base de datos en MongoDB

Mehvish Ashiq 30 enero 2023
  1. Copie una colección dentro de la misma base de datos mientras trabaja en MongoDB
  2. Use mongodump y mongorestore para copiar una colección dentro de la misma base de datos en MongoDB
  3. Use el método aggregate() para copiar una colección dentro de la misma base de datos en MongoDB
  4. Utilice el bucle forEach() para copiar una colección dentro de la misma base de datos en MongoDB
Copie una colección dentro de la misma base de datos en MongoDB

Copiar una colección dentro de la misma base de datos es una tarea increíble; ahorra tiempo y esfuerzo. Este tutorial demuestra el uso de mongodump, mongorestore, aggregate() y forEach() para copiar una colección dentro de la misma base de datos usando MongoDB.

Copie una colección dentro de la misma base de datos mientras trabaja en MongoDB

En las versiones anteriores de MongoDB, por ejemplo, menos de 3.0, podíamos usar el método copyTo() como db.collection_name.copyTo() para copiar la colección, pero ahora está obsoleto.

El eval también está obsoleto con el inicio de la versión 4.2 de MongoDB. Tenga en cuenta que db.collection_name.copyTo() envuelve eval, lo que significa que no podemos copiar la colección utilizando ninguno de ellos si tenemos MongoDB versión 4.2 o superior.

Hay algunas otras formas en las nuevas versiones de MongoDB que podemos usar para copiar una colección dentro de la misma base de datos. Algunos de ellos se dan aquí.

  1. Usa los comandos mongodump y mongorestore
  2. Usa el método aggregate()
  3. Usa el bucle forEach()

Vamos a empezar a aprender cada uno de ellos uno por uno.

Use mongodump y mongorestore para copiar una colección dentro de la misma base de datos en MongoDB

Es la forma más rápida de clonar/copiar una colección dentro de la misma base de datos usando MongoDB Database Tools; en particular, podemos usar mongodump y mongorestore. La herramienta de base de datos es un conjunto de utilidades de línea de comandos para trabajar en MongoDB.

Podemos usar los siguientes comandos en el símbolo del sistema de Windows para comprobar la versión de mongodump y mongorestore. Si devuelve la versión respectiva con éxito, las herramientas de la base de datos están instaladas.

De lo contrario, siga esto para instalar las herramientas de la base de datos.

Código de ejemplo:

C:/Users/Dell> mongodump --version

Código de ejemplo:

C:/Users/Dell> mongorestore --version

Recuerde, tenemos que ejecutar los comandos mongodump y mongorestore desde la línea de comandos de nuestro sistema, por ejemplo, el símbolo del sistema del sistema operativo Windows o terminal si estamos usando Ubuntu. Nunca ejecute este comando desde el shell mongo.

Una vez que tengamos las herramientas de la base de datos para trabajar con MongoDB, ejecute el siguiente comando para volcar la colección teachers dentro de la misma base de datos: test.

Código de ejemplo:

C:/Users/Dell> mongodump -d test -c teachers

Producción :

2022-05-27T13:05:14.497+0500    writing test.teachers to dump\test\teachers.bson
2022-05-27T13:05:14.503+0500    done dumping test.teachers (3 documents)

El resultado anterior muestra que el archivo de volcado está escrito en dump\test\teachers.bson. Entonces, necesitamos restaurarlo usando el comando dado a continuación.

Código de ejemplo:

C:/Users/Dell>mongorestore -d test -c teachers1 --dir=dump/<db>/<sourcecollection.bson>

Producción :

2022-05-27T13:05:28.085+0500    checking for collection data in dump\test\teachers.bson
2022-05-27T13:05:28.088+0500    reading metadata for test.teachers1 from dump\test\teachers.metadata.json
2022-05-27T13:05:28.252+0500    restoring test.teachers1 from dump\test\teachers.bson
2022-05-27T13:05:28.312+0500    finished restoring test.teachers1 (3 documents, 0 failures)
2022-05-27T13:05:28.312+0500    no indexes to restore for collection test.teachers1
2022-05-27T13:05:28.313+0500    3 document(s) restored successfully. 0 document(s) failed to restore.

El resultado se verá como el anterior, lo que significa que la colección se copió correctamente. La colección de destino denominada teacher1 se creará si no existe en la base de datos actual.

A continuación, abra el shell de mongo y ejecute la siguiente consulta para ver si la colección copiada está allí.

Código de ejemplo:

> show collections

Producción :

teachers
teachers1

Alternativamente, también podemos usar mongoexport para exportar la colección (teachers) desde una base de datos (test) y luego usar mongoimport para importarla a la colección teachers2 dentro de la misma base de datos.

Código de ejemplo:

C:/Users/Dell> mongoexport -d test -c teachers | mongoimport -d test -c teachers2 --drop

Use el método aggregate() para copiar una colección dentro de la misma base de datos en MongoDB

Código de ejemplo:

> db.teachers.aggregate([{$out: "teachers3"}])

Este comando se ejecuta usando el shell mongo. Después de eso, usamos el comando show collections para ver si teachers3 está ahí.

Código de ejemplo:

> show collections

Producción :

teachers
teachers1
teachers2
teachers3

Estamos usando la tubería de agregación que devuelve los datos de la colección teachers y los escribe en la colección especificada, que aquí es teachers3. Podemos usar este enfoque si tenemos MongoDB versión 4.4 o superior.

Utilice el bucle forEach() para copiar una colección dentro de la misma base de datos en MongoDB

Código de ejemplo:

> db.teachers.find().forEach((doc) => {
    db.teachers4.insert(doc)
  })

Utilice la siguiente consulta para confirmar que teachers4 reside dentro de la misma base de datos.

Código de ejemplo:

> show collections

Producción :

teachers
teachers1
teachers2
teachers3
teachers4

Este método es el más lento en comparación con todos los enfoques anteriores debido al uso de un bucle. Itera sobre todos los documentos de la colección de origen y los inserta en la colección de destino uno por uno.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Artículo relacionado - MongoDB Collection