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

2 Cara Menampilkan Indeks di MongoDB

Jika Anda memiliki indeks tersembunyi di MongoDB, Anda dapat menggunakan unhideIndex() metode atau collMod perintah administrasi untuk menyembunyikannya.

Contoh Indeks

Mari kita lihat indeks pada koleksi yang disebut pets :

db.pets.getIndexes()

Hasil:

[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_"
	},
	{
		"v" : 2,
		"key" : {
			"weight" : -1
		},
		"name" : "idx_weight_-1",
		"hidden" : true
	},
	{
		"v" : 2,
		"hidden" : true,
		"key" : {
			"type" : 1
		},
		"name" : "type_1"
	}
]

Kita dapat melihat bahwa ada tiga indeks, dan dua yang terakhir disembunyikan. Kami tahu ini karena mereka memiliki "hidden" : true dalam definisi mereka.

Tampilkan menggunakan unhideIndexes() Metode

Cara pertama untuk menampilkan indeks adalah dengan menggunakan db.collection.unhideIndex() metode. Metode ini menerima nama indeks atau pola kuncinya sebagai parameter untuk menentukan indeks mana yang akan ditampilkan.

Contoh:

db.pets.unhideIndex("idx_weight_-1")

Keluaran:

{ "hidden_old" : true, "hidden_new" : false, "ok" : 1 }

Keluaran dari unhideIndex() metode menampilkan nilai lama untuk hidden bidang (dalam hal ini true ) dan nilai baru (dalam hal ini false ).

Namun, jika kami memperlihatkan indeks yang sudah tidak disembunyikan (atau menyembunyikan yang sudah disembunyikan), ini tidak akan ditampilkan, dan kami hanya mendapatkan yang berikut:

{ "ok" : 1 }

Bagaimanapun, indeks sekarang tidak disembunyikan.

unhideIndex() metode adalah pembungkus untuk collMod perintah administrasi (di bawah).

collMod Perintah

collMod perintah administrasi memungkinkan kita untuk menambahkan opsi ke koleksi atau mengubah definisi tampilan.

Kita dapat menggunakannya untuk menampilkan indeks dengan melewatkan hidden: false :

Contoh:

db.runCommand( {
   collMod: "pets",
   index: {
      name: "type_1",
      hidden: false
   }
} )

Hasil:

{ "hidden_old" : true, "hidden_new" : false, "ok" : 1 }

Ini mengembalikan dokumen yang sama dengan unhideIndex() kembali.

Mirip dengan unhideIndex() , Anda memiliki opsi untuk menentukan nama indeks atau pola kuncinya.

Berikut ini contoh penggunaan pola kunci:

db.runCommand( {
   collMod: "pets",
   index: {
      keyPattern: { "type" : 1 },
      hidden: false
   }
} )

Dalam hal ini, indeks didefinisikan menggunakan { "type" : 1 } , sehingga definisi ini dapat digunakan sebagai pengganti nama indeks.

Verifikasi Perubahan

Untuk memverifikasi perubahan kami, kami dapat memanggil getIndexes() lagi untuk melihat definisi indeks:

db.pets.getIndexes()

Hasil:

[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_"
	},
	{
		"v" : 2,
		"key" : {
			"weight" : -1
		},
		"name" : "idx_weight_-1"
	},
	{
		"v" : 2,
		"key" : {
			"type" : 1
		},
		"name" : "type_1"
	}
]

Seperti yang diharapkan, kedua indeks telah disembunyikan. Kami juga dapat menyembunyikannya lagi dengan meneruskan hidden: true .

Tidak Dapat Menyembunyikan/Menampilkan Indeks? Periksa Setelan ini.

mongod featureCompatibilityVersion minimal harus 4.4 sebelum Anda dapat menyembunyikan index. Namun, setelah disembunyikan, indeks akan tetap tersembunyi bahkan dengan featureCompatibilityVersion setel ke 4.2 pada binari MongoDB 4.4.

Anda dapat memeriksa featureCompatibilityVersion setting dengan kode berikut:

db.adminCommand( 
    { 
        getParameter: 1, 
        featureCompatibilityVersion: 1 
    } 
)

Anda dapat mengaturnya menggunakan setFeatureCompatibilityVersion perintah:

db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )

setFeatureCompatibilityVersion perintah harus dijalankan di admin basis data.

Perhatikan juga, Anda tidak dapat menyembunyikan _id indeks.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Agregat $lookup tidak mengembalikan elemen urutan array asli

  2. Cetak cantik di shell MongoDB sebagai default

  3. Cara menganalisis penggunaan disk dari wadah Docker

  4. Luwak tidak menyimpan objek bersarang

  5. MongoDB $milidetik