MongoDB - Ekspresi Reguler
Halo sana, para ahli basis data masa depan! Hari ini, kita akan mendalam ke dunia yang menarik dari Ekspresi Reguler dalam MongoDB. Jangan khawatir jika Anda baru dalam programming - saya akan memandu Anda dalam perjalanan ini langkah demi langkah, seperti yang telah saya lakukan untuk ribuan murid selama tahun-tahun mengajar saya. Ayo kita mulai petualangan ini bersama!
Apa Itu Ekspresi Reguler?
Sebelum kita masuk ke spesifikasi MongoDB, mari kita pahami apa itu ekspresi reguler (regex). Bayangkan Anda adalah seorang detektif yang mencari pola tertentu dalam laut teks. Itu tepat apa yang regex lakukan - itu membantu Anda mencari pola dalam string. Keren, kan?
Menggunakan Ekspresi regex dalam MongoDB
Dalam MongoDB, kita menggunakan regex untuk melakukan pencocokan pola dalam query kita. Itu seperti memiliki kaca pembesar super untuk basis data Anda!
mari mulai dengan contoh sederhana. Misal kita memiliki koleksi buku, dan kita ingin menemukan semua buku yang judulnya dimulai dengan "The".
db.books.find({ title: /^The/ })
Dalam query ini:
-
db.books
adalah koleksinya -
find()
adalah metode yang kita gunakan untuk mencari -
title
adalah field yang kita cari -
/^The/
adalah pola regex kita
Simbol ^
berarti "dimulai dengan". Jadi query ini menemukan semua dokumen di mana judulnya dimulai dengan "The".
maripecahkan lebih lanjut:
// Ini akan cocok:
"The Great Gatsby"
"The Catcher in the Rye"
// Ini tidak akan cocok:
"Catch-22"
"To Kill a Mockingbird"
Menggunakan Ekspresi regex dengan Case Insensitive
Sekarang, apa bila kita ingin menemukan buku yang dimulai dengan "the", tapi kita tidak peduli apakah itu huruf besar atau kecil? Kita bisa membuat regex kita case-insensitive!
db.books.find({ title: /^the/i })
huruf i
di akhir regex membuatnya case-insensitive. Sekarang itu akan cocok:
"The Great Gatsby"
"the catcher in the rye"
"THE LORD OF THE RINGS"
Menggunakan regex untuk Elemen Array
Kekuatan regex MongoDB juga diperpanjang ke array! Misal kita memiliki koleksi film dengan array jenis. Kita bisa mencari film dengan jenis yang cocok dengan pola tertentu.
db.movies.find({ genres: /^Sci/ })
Ini akan menemukan film dengan jenis yang dimulai dengan "Sci", seperti:
{ title: "Interstellar", genres: ["Sci-Fi", "Adventure", "Drama"] }
{ title: "The Matrix", genres: ["Sci-Fi", "Action"] }
Optimasi Query Regular Expression
Meskipun regex kuat, itu bisa lambat jika tidak digunakan dengan hati-hati. Berikut adalah beberapa tips untuk optimasi query regex Anda:
-
Gunakan anchor:
^
untuk awal dan$
untuk akhir string. -
Hindari mulai dengan wildcard: Pola seperti
/.*abc/
lambat. - Gunakan indeks: Jika memungkinkan, buat indeks pada field yang Anda query.
Ini adalah contoh query yang lebih optimal:
db.books.find({ title: /^The.*Potter$/i })
Ini akan secara efisien menemukan buku yang dimulai dengan "The" (case-insensitive) dan berakhir dengan "Potter".
Metode Regex dalam MongoDB
MongoDB menyediakan beberapa metode regex. mari kita lihat mereka dalam tabel:
Metode | Deskripsi | Contoh |
---|---|---|
$regex |
Menyediakan kemampuan ekspresi reguler untuk pencocokan pola | { name: { $regex: /john/i } } |
$options |
Mengubah perilaku pencocokan $regex | { name: { $regex: /john/, $options: 'i' } } |
$options
bisa termasuk:
-
i
untuk case-insensitivity -
m
untuk pencocokan multi-baris -
x
untuk mengabaikan spasi dalam regex
Latihan Praktik
mari kita uji pengetahuan kita! Bayangkan kita memiliki koleksi email. Kita ingin menemukan semua email dari akun gmail.
db.emails.find({ address: /.*@gmail\.com$/i })
Regex ini:
-
.*
cocok dengan semua karakter -
@gmail\.com
cocok dengan tepat "@gmail.com" (kita escape titik dengan\
) -
$
memastikan pencocokan berada di akhir string -
i
membuatnya case-insensitive
Jadi itu akan cocok:
[email protected]
[email protected]
Tapi tidak:
[email protected]
[email protected]
Kesimpulan
Selamat! Anda baru saja mengambil langkah pertama ke dunia regex dalam MongoDB. Ingat, seperti semua alat kuat, regex harus digunakan bijaksana. Mulai sederhana, uji secara menyeluruh, dan optimalkan jika perlu.
Seperti yang saya selalu katakan kepada murid-murid saya, cara terbaik untuk belajar adalah dengan melakukan. mari buka shell MongoDB Anda, dan mulai mencoba regex. Siapa tahu? Anda mungkin menjadi Sherlock Holmes dari pengqueryan basis data!
Semangat coding, dan may the regex be with you!
Credits: Image by storyset