MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Salin/Klon Koleksi di MongoDB

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).


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Menghapus item tertentu dari array dengan MongoDB

  2. Apakah mungkin untuk menghasilkan Koleksi MongoDB yang dinamai secara dinamis?

  3. Periksa apakah database mongodb ada?

  4. Cara menggabungkan bidang array dalam dokumen dalam agregasi Mongo

  5. Menggunakan generator Rekaman Aktif setelah instalasi Mongoid?