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.