MongoDB memiliki perintah administrasi yang disebut dropIndexes
yang menjatuhkan satu atau beberapa indeks (kecuali indeks pada _id
field) dari koleksi yang ditentukan.
Contoh Indeks
Misalkan kita memiliki koleksi yang disebut posts
dengan indeks berikut:
db.pets.getIndexes()
Hasil:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" }, { "v" : 2, "key" : { "title" : 1 }, "name" : "title_1" }, { "v" : 2, "key" : { "tags" : 1 }, "name" : "tags_1" }, { "v" : 2, "key" : { "_fts" : "text", "_ftsx" : 1 }, "name" : "body_text", "weights" : { "body" : 1 }, "default_language" : "english", "language_override" : "language", "textIndexVersion" : 3 } ]
Dalam hal ini kami memiliki empat indeks. Yang pertama adalah indeks default untuk _id
bidang. Indeks ini dibuat secara otomatis saat Anda membuat koleksi, dan tidak dapat dihapus.
Tiga indeks lainnya dapat dihapus.
Lepaskan Satu Indeks
Untuk menghapus indeks tunggal, berikan nama koleksi, serta nama indeks atau dokumen spesifikasinya.
Contoh:
db.runCommand( { dropIndexes: "posts", index: "title_1" })
Dalam hal ini, kami memberikan nama indeks.
Menjalankan yang menghasilkan output berikut:
{ "nIndexesWas" : 4, "ok" : 1 }
Ini memberitahu kita bahwa indeks dijatuhkan.
Atau, kita bisa menggunakan dokumen spesifikasi indeks daripada namanya, seperti ini:
db.runCommand( { dropIndexes: "posts", index: { "title" : 1 } })
Lepaskan Beberapa Indeks
Jika Anda ingin menghapus beberapa indeks (tetapi tidak semua indexes), berikan nama indeks dalam array.
Contoh:
db.runCommand( {
dropIndexes: "posts",
index: [ "tags_1", "body_text" ]
})
Hasil:
{ "nIndexesWas" : 3, "ok" : 1 }
Pada tahap ini, mari kita periksa kembali daftar indeks kita:
db.posts.getIndexes()
Hasil:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]
Seperti yang diharapkan, tiga indeks telah dihapus dan hanya ada satu yang tersisa (dan tidak dapat dihapus).
Saat melewati sebuah array, indeks teks hanya dapat dijatuhkan dengan menentukan nama indeks. Dalam kasus seperti itu, Anda tidak dapat menghapus indeks teks dengan menentukan dokumen spesifikasinya, seperti yang dapat Anda lakukan dengan indeks lainnya.
Lepaskan Semua Indeks
Anda dapat menghapus semua indeks dengan menggunakan wildcard asterisk (*
).
Untuk contoh ini, saya telah membuat ulang indeks. Jadi indeks terlihat seperti ini::
db.products.getIndexes()
Hasil:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" }, { "v" : 2, "key" : { "title" : 1 }, "name" : "title_1" }, { "v" : 2, "key" : { "tags" : 1 }, "name" : "tags_1" }, { "v" : 2, "key" : { "_fts" : "text", "_ftsx" : 1 }, "name" : "body_text", "weights" : { "body" : 1 }, "default_language" : "english", "language_override" : "language", "textIndexVersion" : 3 } ]
Sekarang mari kita lepaskan semua indeks sekaligus:
db.runCommand( { dropIndexes: "posts", index: "*" })
Hasil:
{ "nIndexesWas" : 4, "msg" : "non-_id indexes dropped for collection", "ok" : 1 }
Semua indeks dihapus kecuali untuk _id
index (indeks itu tidak dapat dihapus).
Mari kita periksa indeks lagi.
db.products.getIndexes()
Hasil:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]
Seperti yang diharapkan, _id
indeks adalah satu-satunya yang tersisa.
Dokumentasi MongoDB
Lihat dokumentasi MongoDB untuk informasi lebih lanjut tentang dropIndexes
perintah.