Dvir Arad
Mengikuti
26 Mei 2019
·
5 menit membaca
·
Khusus anggota
Pengantar Indeks MongoDB
Apa itu indeks MongoDB?
Bagaimana mereka bekerja?
Masalah apa yang coba dipecahkan oleh indeks?
Menjawab. Kueri lambat
Membuat indeks
Saat membuat dokumen dalam koleksi, MongoDB membuat indeks unik menggunakan bidang _id. MongoDB menyebut ini sebagai Indeks _id Default. Indeks default ini tidak dapat dihapus dari koleksi
Saat menanyakan kumpulan data pengujian, Anda dapat melihat kolom _id yang akan digunakan sebagai indeks default
db.studentgrades.find().pretty()_Hasil
Sekarang mari kita buat index. Untuk melakukannya, Anda dapat menggunakan metode createIndex menggunakan sintaks berikut
db.<collection>.createIndex(<Key and Index Type>, <Options>)Saat membuat indeks, Anda perlu menentukan bidang yang akan diindeks dan arah tombol (1 atau -1) untuk menunjukkan urutan naik atau turun
Hal lain yang perlu diingat adalah nama indeks. Secara default, MongoDB akan menghasilkan nama indeks dengan menggabungkan kunci yang diindeks dengan arah setiap kunci dalam indeks menggunakan garis bawah sebagai pemisah. Misalnya. {nama. 1} akan dibuat sebagai name_1
Opsi terbaik adalah menggunakan opsi nama untuk menentukan nama indeks khusus saat membuat indeks. Indeks tidak dapat diganti namanya setelah dibuat. (Satu-satunya cara untuk mengganti nama indeks adalah dengan membuang indeks itu terlebih dahulu, , dan membuatnya kembali menggunakan nama yang diinginkan. )
Mari buat indeks menggunakan bidang nama di koleksi nilai siswa dan beri nama sebagai indeks nama siswa
Hasil
Menemukan indeks
Anda dapat menemukan semua indeks yang tersedia dalam koleksi MongoDB dengan menggunakan metode getIndexes. Ini akan mengembalikan semua indeks dalam koleksi tertentu
db.<collection>.getIndexes()_Mari kita lihat semua indeks di koleksi studentgrades menggunakan perintah berikut
db.studentgrades.getIndexes()Hasil
Output berisi indeks _id default dan indeks nama siswa yang dibuat pengguna
Menjatuhkan indeks
Untuk menghapus indeks dari koleksi, gunakan metode dropIndex sambil menentukan nama indeks yang akan dihapus
db.<collection>.dropIndex(<Index Name / Field Name>)_Mari kita hapus indeks yang dibuat pengguna dengan indeks nama siswa, seperti yang ditunjukkan di bawah ini
db.studentgrades.dropIndex("student name index")Hasil
Anda juga dapat menggunakan nilai bidang indeks untuk menghapus indeks tanpa nama yang ditentukan
db.studentgrades.dropIndex({name:1})_Hasil
Perintah dropIndexes juga dapat menghapus semua indeks kecuali indeks _id default
db.studentgrades.dropIndexes()_Hasil
Jenis indeks MongoDB umum
MongoDB menyediakan berbagai jenis indeks yang dapat dimanfaatkan sesuai dengan kebutuhan pengguna. Inilah yang paling umum
- Indeks bidang tunggal
- Indeks senyawa
- Indeks multikunci
Indeks bidang tunggal
Indeks yang ditentukan pengguna ini menggunakan satu bidang dalam dokumen untuk membuat indeks dalam urutan naik atau turun (1 atau -1). Dalam indeks bidang tunggal, urutan kunci indeks tidak berdampak karena MongoDB dapat melintasi indeks di kedua arah
db.studentgrades.find().pretty()_0Hasil
Indeks di atas akan mengurutkan data dalam urutan menaik menggunakan bidang nama. Anda dapat menggunakan metode sort() untuk melihat bagaimana data akan direpresentasikan dalam indeks
db.studentgrades.find().pretty()_1Hasil
Indeks senyawa
Anda dapat menggunakan banyak bidang dalam dokumen MongoDB untuk membuat indeks majemuk. Jenis indeks ini akan menggunakan kolom pertama untuk pengurutan awal, lalu mengurutkan berdasarkan kolom sebelumnya
db.studentgrades.find().pretty()_2Dalam indeks majemuk di atas, MongoDB akan
- Urutkan pertama berdasarkan bidang subjek
- Kemudian, dalam setiap nilai mata pelajaran, urutkan berdasarkan nilai
Indeks akan membuat struktur data yang mirip dengan berikut ini
db.studentgrades.find().pretty()_3Hasil
Indeks multikunci
MongoDB mendukung bidang array pengindeksan. Saat Anda membuat indeks untuk bidang yang berisi larik, MongoDB akan membuat entri indeks terpisah untuk setiap elemen dalam larik. Indeks multikunci ini memungkinkan pengguna untuk mengkueri dokumen menggunakan elemen di dalam larik
MongoDB akan secara otomatis membuat indeks multikey saat bertemu dengan bidang array tanpa mengharuskan pengguna untuk secara eksplisit menentukan tipe multikey
Mari buat kumpulan data baru yang berisi bidang larik untuk mendemonstrasikan pembuatan indeks multikunci
Hasil
Sekarang mari buat indeks menggunakan bidang nilai
db.studentgrades.find().pretty()_5Hasil
Kode di atas akan secara otomatis membuat indeks Multikey di MongoDB. Saat Anda meminta dokumen menggunakan bidang larik (nilai), MongoDB akan mencari elemen pertama dari larik yang ditentukan dalam metode find() dan kemudian mencari seluruh kueri yang cocok
Misalnya, mari pertimbangkan kueri pencarian berikut
db.studentgrades.find().pretty()_6Awalnya, MongoDB akan menggunakan indeks multikey untuk mencari dokumen di mana array nilai berisi elemen pertama (80) di posisi mana pun. Kemudian, dalam dokumen yang dipilih tersebut, dokumen dengan semua elemen yang cocok akan dipilih
Jenis indeks MongoDB lainnya
Selain tipe Indeks populer yang disebutkan di atas, MongoDB juga menawarkan beberapa tipe indeks khusus untuk kasus penggunaan yang ditargetkan
- Indeks geospasial
- Indeks uji
- Indeks hash
Indeks Geospasial
MongoDB menyediakan dua jenis indeks untuk meningkatkan efisiensi kueri basis data saat menangani data koordinat geospasial
- Indeks 2d yang menggunakan geometri planar yang ditujukan untuk pasangan koordinat lama yang digunakan dalam MongoDB 2. 2 dan sebelumnya
- Indeks 2dsphere yang menggunakan geometri bola
Indeks teks
Jenis indeks teks memungkinkan Anda untuk mencari konten string dalam koleksi
db.studentgrades.find().pretty()_8Indeks hash
Jenis indeks Hashed MongoDB digunakan untuk memberikan dukungan fungsionalitas. Ini akan mengindeks nilai hash dari bidang yang ditentukan
db.studentgrades.find().pretty()_9properti indeks MongoDB
Anda dapat meningkatkan fungsionalitas indeks lebih lanjut dengan memanfaatkan properti indeks. Di bagian ini, Anda akan mengetahui properti indeks yang umum digunakan ini
- Indeks jarang
- Indeks parsial
- Indeks unik
Indeks jarang
Properti jarang MongoDB memungkinkan indeks untuk menghilangkan dokumen pengindeksan dalam koleksi jika bidang yang diindeks tidak tersedia dalam dokumen dan membuat indeks yang hanya berisi dokumen yang berisi bidang yang diindeks
db.<collection>.createIndex(<Key and Index Type>, <Options>)0Hasil
Di koleksi nilai siswa sebelumnya, jika Anda membuat indeks menggunakan bidang catatan, itu hanya akan mengindeks dua dokumen karena bidang catatan hanya ada di dua dokumen
Indeks parsial
Fungsionalitas indeks parsial memungkinkan pengguna membuat indeks yang cocok dengan kondisi filter tertentu. Indeks parsial menggunakan opsi partialFilterExpression untuk menentukan kondisi filter
db.<collection>.createIndex(<Key and Index Type>, <Options>)1Hasil
Kode di atas akan membuat indeks untuk bidang nama tetapi hanya akan menyertakan dokumen yang nilai bidang skornya lebih besar atau sama dengan 90
Indeks unik
Properti unik memungkinkan pengguna membuat indeks MongoDB yang hanya menyertakan nilai unik. Ini akan
- Tolak nilai duplikat apa pun di bidang yang diindeks
- Batasi indeks ke dokumen yang berisi nilai unik
Hasil
Indeks yang dibuat di atas akan membatasi pengindeksan ke dokumen dengan nilai unik di bidang nama
Rekap indeks
Itu menyimpulkan tutorial indeks MongoDB ini. Anda telah mempelajari cara membuat, menemukan, dan menjatuhkan indeks, menggunakan tipe indeks yang berbeda, dan membuat indeks yang kompleks. Indeks ini kemudian dapat digunakan untuk lebih meningkatkan fungsionalitas database MongoDB, meningkatkan kinerja aplikasi yang menggunakan kueri database cepat