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

Cara Mengonversi Tampilan MongoDB menjadi Koleksi

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

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Permintaan luwak dekat (...) pada bidang yang diindeks 2dsphere tidak mengembalikan hasil yang valid

  2. Gunakan kasus untuk NoSQL

  3. Mongo - Abaikan properti agar tidak dipertahankan

  4. Ikhtisar Enkripsi Tingkat Bidang Sisi Klien di MongoDB

  5. Kumpulan Mesin &Profil Cloud untuk MongoDB