Di versi MongoDB sebelumnya, Anda dapat menggunakan db.collection.copyTo()
metode untuk menyalin koleksi.
MongoDB telah menghentikan metode itu. Juga, mulai dari versi 4.2, MongoDB telah menghapus eval
memerintah. Diberikan db.collection.copyTo()
membungkus eval
, ini berarti Anda tidak dapat menggunakan keduanya jika Anda menggunakan MongoDB 4.2 atau lebih baru.
Untungnya, ada cara lain untuk menyalin koleksi MongoDB.
Periksa Alat Basis Data MongoDB
Di MongoDB, Anda dapat mengkloning koleksi menggunakan Alat Database MongoDB. Secara khusus, Anda dapat menggunakan mongodump
dan mongorestore
.
Alat Database MongoDB adalah rangkaian utilitas baris perintah untuk bekerja dengan MongoDB.
Jika Anda tidak yakin apakah Anda telah menginstal MongoDB Database Tools, coba jalankan perintah berikut di Terminal atau Command Prompt untuk memeriksa:
mongodump --version
mongorestore --version
Itu secara khusus memeriksa mongodump
dan mongorestore
versi.
Jika Anda tidak memilikinya, Anda dapat menggunakan petunjuk penginstalan di situs web MongoDB untuk menginstal Alat Database MongoDB ke sistem Anda.
Mengkloning Koleksi ke Database yang Sama
Anda perlu menjalankan mongodump
dan mongorestore
dari baris perintah sistem Anda (mis. Terminal baru atau jendela Prompt Perintah). Jangan jalankan dari mongo
kerang.
Berikut adalah contoh kode yang mengkloning koleksi ke database yang sama:
mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive --nsFrom='PetHotel.pets' --nsTo='PetHotel.pets2'
Dalam hal ini, kami mencadangkan pets
koleksi di PetHotel
database, lalu pulihkan sebagai pets2
dalam database yang sama.
Ini menggunakan mongodump
untuk membuat file cadangan koleksi, lalu mongorestore
untuk memulihkan koleksi tersebut dengan nama yang berbeda. Kami melakukan ini dengan membuang koleksi ke aliran keluaran standar dan menyalurkan ke mongorestore
.
Inilah yang dilakukan setiap parameter:
Parameter | Deskripsi |
---|---|
--archive | Menulis output ke file arsip tertentu atau, jika file arsip tidak ditentukan, menulis ke output standar (stdout ). Dalam kasus kami, file arsip tidak ditentukan, sehingga menulis ke output standar. |
--db | Menentukan database yang berisi koleksi yang ingin kita kloning. Dalam hal ini, databasenya disebut PetHotel . |
--nsFrom | Menentukan koleksi dalam file dump. Ini adalah koleksi yang ingin kami tiru. |
--nsTo | Menentukan nama koleksi yang harus digunakan saat dipulihkan. Dalam kasus kami, kami menyebutnya pets2 . |
Menyalin Koleksi ke Basis Data Lain
Anda dapat menggunakan teknik yang sama untuk menyalin koleksi ke database lain. Dalam hal ini, Anda bahkan tidak perlu mengubah nama koleksi jika tidak mau.
Ini contohnya:
mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive --nsFrom='PetHotel.pets' --nsTo='PetHouse.pets'
Ini sangat mirip dengan contoh sebelumnya, kecuali bahwa --nsTo
our argumen menentukan PetHouse.pets
sebagai koleksi tujuan.
Ini berarti bahwa koleksi kloning akan disebut pets
, dan itu akan ditempatkan di PetHouse
database (bukan PetHotel
asli) basis data).