Berapa banyak indeks yang dapat dimiliki mongodb?

Indeks memberi pengguna cara yang efisien untuk meminta data. Saat kueri data tanpa indeks, kueri harus mencari semua catatan dalam database untuk menemukan data yang cocok dengan kueri

Di MongoDB, kueri tanpa indeks disebut pemindaian koleksi. Pemindaian koleksi akan

  • Menghasilkan berbagai kemacetan kinerja
  • Secara signifikan memperlambat aplikasi Anda

Untungnya, menggunakan indeks memperbaiki kedua masalah ini. Dengan membatasi jumlah dokumen yang akan ditanyakan, Anda akan meningkatkan keseluruhan kinerja aplikasi

Dalam tutorial ini, saya akan memandu Anda melalui berbagai jenis indeks dan menunjukkan cara membuat dan mengelola indeks di MongoDB

(Artikel ini adalah bagian dari Panduan MongoDB kami. Gunakan menu sebelah kanan untuk menavigasi. )

Apa itu indeks di MongoDB?

Indeks adalah struktur data khusus yang menyimpan sebagian kecil data Koleksi dengan cara yang dapat ditanyakan dengan mudah

Dalam istilah paling sederhana, indeks menyimpan nilai bidang yang diindeks di luar tabel atau kumpulan dan melacak lokasinya di disk. Nilai-nilai ini digunakan untuk mengurutkan bidang yang diindeks. Pengurutan ini membantu melakukan pencocokan kesetaraan dan operasi kueri berbasis rentang secara efisien. Di MongoDB, indeks ditentukan di tingkat koleksi dan indeks pada bidang atau subbidang apa pun dari dokumen dalam koleksi didukung

Untuk tutorial ini, kami akan menggunakan kumpulan data berikut untuk mendemonstrasikan fungsionalitas pengindeksan MongoDB

use students
db.createCollection("studentgrades")
db.studentgrades.insertMany(
    [
        {name: "Barry", subject: "Maths", score: 92},
        {name: "Kent", subject: "Physics", score: 87},
        {name: "Harry", subject: "Maths", score: 99, notes: "Exceptional Performance"},
        {name: "Alex", subject: "Literature", score: 78},
        {name: "Tom", subject: "History", score: 65, notes: "Adequate"}
    ]
)
db.studentgrades.find({},{_id:0})

Hasil

Berapa banyak indeks yang dapat dimiliki mongodb?

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

Berapa banyak indeks yang dapat dimiliki mongodb?

Sekarang mari kita buat index. Untuk melakukannya, Anda dapat menggunakan metode createIndex menggunakan sintaks berikut

db..createIndex(, )

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

db.studentgrades.createIndex(
{name: 1},
{name: "student name index"}
)

Hasil

Berapa banyak indeks yang dapat dimiliki mongodb?

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..getIndexes()
_

Mari kita lihat semua indeks di koleksi studentgrades menggunakan perintah berikut

db.studentgrades.getIndexes()

Hasil

Berapa banyak indeks yang dapat dimiliki mongodb?

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..dropIndex()
_

Mari kita hapus indeks yang dibuat pengguna dengan indeks nama siswa, seperti yang ditunjukkan di bawah ini

db.studentgrades.dropIndex("student name index")

Hasil

Berapa banyak indeks yang dapat dimiliki mongodb?

Anda juga dapat menggunakan nilai bidang indeks untuk menghapus indeks tanpa nama yang ditentukan

db.studentgrades.dropIndex({name:1})
_

Hasil

Berapa banyak indeks yang dapat dimiliki mongodb?

Perintah dropIndexes juga dapat menghapus semua indeks kecuali indeks _id default

db.studentgrades.dropIndexes()
_

Hasil

Berapa banyak indeks yang dapat dimiliki mongodb?

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()
_0

Hasil

Berapa banyak indeks yang dapat dimiliki mongodb?

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()
_1

Hasil

Berapa banyak indeks yang dapat dimiliki mongodb?

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()
_2

Berapa banyak indeks yang dapat dimiliki mongodb?

Dalam 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()
_3

Hasil

Berapa banyak indeks yang dapat dimiliki mongodb?

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

db.studentgrades.find().pretty()
_4

Hasil

Berapa banyak indeks yang dapat dimiliki mongodb?

Sekarang mari buat indeks menggunakan bidang nilai

db.studentgrades.find().pretty()
_5

Hasil

Berapa banyak indeks yang dapat dimiliki mongodb?

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()
_6

Awalnya, 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

Berapa banyak indeks yang dapat dimiliki mongodb?

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
db.studentgrades.find().pretty()
_7

Indeks teks

Jenis indeks teks memungkinkan Anda untuk mencari konten string dalam koleksi

db.studentgrades.find().pretty()
_8

Indeks hash

Jenis indeks Hashed MongoDB digunakan untuk memberikan dukungan fungsionalitas. Ini akan mengindeks nilai hash dari bidang yang ditentukan

db.studentgrades.find().pretty()
_9

properti 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..createIndex(, )
0

Hasil

Berapa banyak indeks yang dapat dimiliki mongodb?

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..createIndex(, )
1

Hasil

Berapa banyak indeks yang dapat dimiliki mongodb?

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
db..createIndex(, )
2

Hasil

Berapa banyak indeks yang dapat dimiliki mongodb?

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

Bisakah MongoDB memiliki banyak indeks?

MongoDB dapat menggunakan persimpangan beberapa indeks untuk memenuhi kueri . Secara umum, setiap persimpangan indeks melibatkan dua indeks; .

Berapa batas kunci indeks di MongoDB?

Mulai versi 4. 4, MongoDB menghilangkan batas ukuran kunci beling. Untuk MongoDB 4. 2 dan sebelumnya, kunci beling tidak boleh melebihi 512 byte. Indeks shard key dapat berupa indeks menaik pada kunci shard, indeks majemuk yang dimulai dengan kunci shard dan menentukan urutan menaik untuk kunci shard, atau indeks hash

Berapa banyak indeks teks yang dapat dimiliki koleksi MongoDB?

Sebuah koleksi dapat memiliki maksimal satu indeks teks.

Apakah MongoDB memiliki batas?

Ukuran maksimum satu dokumen dalam MongoDB adalah 16 MB dengan kedalaman bertingkat 100 level . Sunting. Tidak ada ukuran maksimal untuk database MongoDB individual.