Copie una colección dentro de la misma base de datos en MongoDB
- Copie una colección dentro de la misma base de datos mientras trabaja en MongoDB
-
Use
mongodump
ymongorestore
para copiar una colección dentro de la misma base de datos en MongoDB -
Use el método
aggregate()
para copiar una colección dentro de la misma base de datos en MongoDB -
Utilice el bucle
forEach()
para copiar 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í.
- Usa los comandos
mongodump
ymongorestore
- Usa el método
aggregate()
- 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.