Jika Anda memiliki pandangan di database MongoDB yang ingin Anda jadikan koleksi, Anda berada di tempat yang tepat.
Di bawah ini adalah contoh mengonversi tampilan menjadi koleksi di MongoDB.
Contoh
Contoh ini menunjukkan cara mengonversi tampilan menjadi koleksi menggunakan mongodump
Alat Database MongoDB dan mongorestore
.
Jika Anda belum menginstal alat ini, lihat panduan instalasi MongoDB.
Temukan Pemandangan
Pertama, mari kita lihat tampilan dan koleksi di database saat ini:
show collections
Hasil:
employees owners pets system.views v_pettypes
Dalam hal ini, v_pettypes
sebenarnya adalah pemandangan.
Kami dapat memverifikasi bahwa itu adalah tampilan dengan kueri berikut:
db.getCollectionInfos( { "name": "v_pettypes"} )
Hasil:
[ { "name" : "v_pettypes", "type" : "view", "options" : { "viewOn" : "pets", "pipeline" : [ { "$group" : { "_id" : "$type" } } ] }, "info" : { "readOnly" : true } } ]
Kami tahu ini adalah tampilan karena type
bidang memiliki nilai view
.
Mengonversi Tampilan menjadi Koleksi
Sekarang kita dapat melanjutkan dan mengubah tampilan itu menjadi koleksi. Kita dapat melakukannya dengan Alat Database MongoDB mongodump
dan mongorestore
.
Kami akan menggunakan mongodump
untuk mengekspor tampilan, dan mongorestore
untuk memulihkannya. Secara khusus, kami akan menyalurkan mongodump
aliran keluaran ke mongorestore
. Dengan begitu kita bisa melakukan semuanya sekaligus.
Ini kodenya:
mongodump --archive --db=PetHotel --collection=v_pettypes --viewsAsCollections | mongorestore --archive --nsFrom='PetHotel.v_pettypes' --nsTo='PetHotel.pettypes'
Anda perlu menjalankan kode itu dari baris perintah sistem Anda (mis. Terminal baru atau jendela Prompt Perintah). Jangan jalankan dari mongo
kerang.
Menjalankan kode itu mengonversi v_pettypes
lihat koleksi yang disebut pettypes
dalam basis data yang sama.
Sebenarnya, kami tidak benar-benar mengkonversi tampilan untuk koleksi. Kami hanya menggunakan --viewsAsCollections
argumen untuk membuang tampilan sebagai koleksi, lalu kami mengembalikan koleksi itu kembali ke database. Oleh karena itu tampilan asli masih ada.
Saat Anda mengekspor tampilan sebagai koleksi, mongodump
menghasilkan file BSON yang berisi dokumen dalam tampilan. Jika Anda menggunakan mongorestore
untuk mengembalikan file BSON yang dihasilkan, tampilan akan dikembalikan sebagai koleksi.
Tanpa menggunakan --viewsAsCollections
argumen, mongodump
mengekspor metadata setiap tampilan. Jika Anda menyertakan file metadata tampilan di mongorestore
operasi, tampilan dibuat ulang.
Menggunakan --viewsAsCollections
juga menghilangkan semua koleksi standar.
Periksa Hasil
Mari kita lihat lagi tampilan dan koleksi kami.
show collections
Hasil:
employees owners pets pettypes system.views v_pettypes
Jadi kita bisa melihat bahwa koleksi baru bernama pettypes
ada, dan tampilan aslinya masih ada.
Kami dapat memverifikasi bahwa pettypes
adalah kumpulan (dan bukan tampilan) sebagai berikut:
db.getCollectionInfos( { "name": "pettypes"} )
Hasil:
[ { "name" : "pettypes", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("d183c7e4-44bc-4656-b272-7ad707f8dc62") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } } ]
Kita dapat melihat bahwa type
kolom berisi nilai collection
, yang artinya adalah koleksi.
Lepaskan Tampilan Aslinya
Pada tahap ini kita sekarang memiliki pilihan untuk menghapus tampilan asli atau membiarkannya di sana.
Kita bisa menjatuhkannya seperti ini:
db.v_pettypes.drop()
Sekarang jika kita memeriksa koleksi, kita dapat melihat bahwa tampilan asli hilang dan koleksi baru tetap ada.
show collections
Hasil:
employees owners pets pettypes system.views