MongoDB - Kueri yang Tercakup
Di bab ini, kita akan belajar tentang kueri yang tercakup.
Apa itu Kueri Tercakup?
Sesuai dengan dokumentasi resmi MongoDB, kueri yang tercakup adalah kueri di mana -
- Semua bidang dalam kueri adalah bagian dari indeks.
- Semua bidang yang dikembalikan dalam kueri berada dalam indeks yang sama.
Karena semua bidang yang ada dalam kueri adalah bagian dari indeks, MongoDB mencocokkan kondisi kueri dan mengembalikan hasilnya menggunakan indeks yang sama tanpa benar-benar melihat ke dalam dokumen. Karena indeks ada di RAM, mengambil data dari indeks jauh lebih cepat dibandingkan dengan mengambil data dengan memindai dokumen.
Menggunakan Kueri Tercakup
Untuk menguji kueri yang tercakup, pertimbangkan dokumen berikut di users koleksi -
{
"_id": ObjectId("53402597d852426020000003"),
"contact": "987654321",
"dob": "01-01-1991",
"gender": "M",
"name": "Tom Benzamin",
"user_name": "tombenzamin"
}
Kami pertama-tama akan membuat indeks gabungan untuk users koleksi di lapangan gender dan user_name menggunakan kueri berikut -
>db.users.createIndex({gender:1,user_name:1})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
Sekarang, indeks ini akan mencakup kueri berikut -
>db.users.find({gender:"M"},{user_name:1,_id:0})
{ "user_name" : "tombenzamin" }
Artinya, untuk kueri di atas, MongoDB tidak akan melihat ke dalam dokumen database. Sebaliknya itu akan mengambil data yang dibutuhkan dari data yang diindeks dengan sangat cepat.
Karena indeks kami tidak termasuk _idlapangan, kami telah secara eksplisit mengecualikannya dari kumpulan hasil kueri kami, karena MongoDB secara default mengembalikan bidang _id di setiap kueri. Jadi kueri berikut tidak akan tercakup di dalam indeks yang dibuat di atas -
>db.users.find({gender:"M"},{user_name:1})
{ "_id" : ObjectId("53402597d852426020000003"), "user_name" : "tombenzamin" }
Terakhir, ingat bahwa indeks tidak dapat mencakup kueri jika -
- Salah satu bidang yang diindeks adalah larik
- Salah satu bidang yang diindeks adalah sub dokumen