MongoDB - Regular Expression
Hai sana, bakal ahli pangkalan data! Hari ini, kita akan mendalam ke dunia yang menarik Regular Expressions dalam MongoDB. Jangan khawatir jika Anda baru dalam pemrograman - saya akan memandu Anda melalui perjalanan ini langkah demi langkah, seperti yang saya lakukan untuk ribuan murid selama tahun-tahun mengajar saya. Mari kita mulai petualangan ini bersama!
Apa itu Regular Expressions?
Sebelum kita melompat ke spesifikasi MongoDB, mari kita mengerti apa regular expressions (regex) itu. Bayangkan Anda seorang detektif yang mencari pola tertentu di laut teks. Itu tepat apa yang regex lakukan - itu membantu Anda mencari pola di string. Keren, kan?
Menggunakan ekspresi regex dalam MongoDB
Dalam MongoDB, kita menggunakan regex untuk melakukan pemadanan pola dalam query kita. Itu seperti memiliki kaca pembesar super untuk pangkalan data Anda!
Mari kita 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".
mari kita perincikan 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 dapat 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 dapat 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"] }
Optimalkan Query Regular Expression
Meskipun regex kuat, itu bisa lambat jika tidak digunakan dengan hati-hati. Berikut adalah beberapa tips untuk optimalkan 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 contoh query yang lebih optimal:
db.books.find({ title: /^The.*Potter$/i })
Ini akan secara efisien menemukan buku yang dimulai dengan "The" (tanpa perhatian huruf besar kecil) 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 regular expression untuk pemadanan pola | { name: { $regex: /john/i } } |
$options |
Mengubah perilaku pemadanan $regex | { name: { $regex: /john/, $options: 'i' } } |
$options
dapat mencakup:
-
i
untuk case-insensitivity -
m
untuk pemadanan multiline -
x
untuk mengabaikan spasi dalam regex
Latihan Praktik
Mari kita uji pengetahuan kita! Bayangkan kita memiliki koleksi surel. Kita ingin menemukan semua surel 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 dot dengan\
) -
$
memastikan bahwa cocokan berada di akhir string -
i
membuatnya case-insensitive
Jadi itu akan cocok:
[email protected]
[email protected]
Tapi tidak cocok:
[email protected]
[email protected]
Kesimpulan
Selamat! Anda baru saja mengambil langkah pertama ke dunia regex dalam MongoDB. Ingat, seperti semua alat yang kuat, regex harus digunakan bijaksana. Mulai dari yang sederhana, uji secara menyeluruh, dan optimalkan saat diperlukan.
Seperti yang saya selalu katakan kepada murid-murid saya, cara terbaik untuk belajar adalah dengan melakukan. Jadi, buka shell MongoDB Anda, dan mulai mencoba regex. Siapa tahu? Anda mungkin menjadi Sherlock Holmes dari pengqueryan pangkalan data!
Happy coding, dan may the regex be with you!
Credits: Image by storyset