Apakah pengindeksan dimungkinkan di mongodb?

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

Apakah pengindeksan dimungkinkan di 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

Apakah pengindeksan dimungkinkan di mongodb?

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

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

Hasil

Apakah pengindeksan dimungkinkan di 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.<collection>.getIndexes()
_

Mari kita lihat semua indeks di koleksi studentgrades menggunakan perintah berikut

db.studentgrades.getIndexes()

Hasil

Apakah pengindeksan dimungkinkan di 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.<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

Apakah pengindeksan dimungkinkan di mongodb?

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

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

Hasil

Apakah pengindeksan dimungkinkan di mongodb?

Perintah dropIndexes juga dapat menghapus semua indeks kecuali indeks _id default

db.studentgrades.dropIndexes()
_

Hasil

Apakah pengindeksan dimungkinkan di 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

Apakah pengindeksan dimungkinkan di 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

Apakah pengindeksan dimungkinkan di 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

Apakah pengindeksan dimungkinkan di 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

Apakah pengindeksan dimungkinkan di 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

Apakah pengindeksan dimungkinkan di mongodb?

Sekarang mari buat indeks menggunakan bidang nilai

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

Hasil

Apakah pengindeksan dimungkinkan di 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

Apakah pengindeksan dimungkinkan di 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.<collection>.createIndex(<Key and Index Type>, <Options>)
0

Hasil

Apakah pengindeksan dimungkinkan di 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.<collection>.createIndex(<Key and Index Type>, <Options>)
1

Hasil

Apakah pengindeksan dimungkinkan di 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.<collection>.createIndex(<Key and Index Type>, <Options>)
2

Hasil

Apakah pengindeksan dimungkinkan di 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

Bagaimana cara menambahkan pengindeksan di MongoDB?

Buat Indeks Tunggal di MongoDB . Untuk memulai, pilih database yang sudah berisi koleksi. Setelah Anda memilih database, gunakan perintah createIndex() di shell untuk membuat satu indeks .

Bagaimana cara mendapatkan indeks di MongoDB?

Anda dapat menemukan semua indeks yang tersedia dalam koleksi MongoDB dengan menggunakan metode getIndexes . Ini akan mengembalikan semua indeks dalam koleksi tertentu. Hasil. Output berisi indeks _id default dan indeks nama siswa yang dibuat pengguna.

Berapa banyak indeks yang dapat Anda miliki di MongoDB?

Sebuah koleksi tidak boleh memiliki lebih dari 64 indeks . Panjang nama indeks tidak boleh lebih dari 125 karakter.

Apa pro dan kontra pengindeksan di MongoDB?

Keuntungan terbesar pengindeksan adalah mempercepat penemuan, pembaruan, dan penghapusan kueri Anda . Cukup alami karena lebih mudah untuk mencari elemen berdasarkan bidang yang diindeks. Kerugian dari pengindeksan adalah 1. Membutuhkan memori (jelas).