MongoDB-এ SQL-এর LIKE অপারেটরের মতো প্যাটার্ন ম্যাচিং করার জন্য Регуляр এক্সপ্রেশন (Regular Expression / Regex) ব্যবহার করা হয়। MongoDB-এ Regex লিখতে ফরওয়ার্ড স্ল্যাশ (/pattern/) ব্যবহার করা হয়।
উদাহরণ: কালেকশন ও ডেটা তৈরি
> db.demo554.insertOne({"UserName":"John","UserMailId":"John@gmail.com"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8f1cfed1d72c4545cb8679") }
> db.demo554.insertOne({"UserName":"Chris","UserMailId":"Chris@gmail.com"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8f1d0cd1d72c4545cb867a") }
> db.demo554.insertOne({"UserName":"Jace","UserMailId":"Jace@gmail.com"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8f1d1cd1d72c4545cb867b") }
সব ডকুমেন্ট দেখানো
> db.demo554.find();
আউটপুট:
{ "_id" : ObjectId("5e8f1cfed1d72c4545cb8679"), "UserName" : "John", "UserMailId" : "John@gmail.com" }
{ "_id" : ObjectId("5e8f1d0cd1d72c4545cb867a"), "UserName" : "Chris", "UserMailId" : "Chris@gmail.com" }
{ "_id" : ObjectId("5e8f1d1cd1d72c4545cb867b"), "UserName" : "Jace", "UserMailId" : "Jace@gmail.com" }
Regex ব্যবহার করে "J" দিয়ে শুরু হওয়া নাম বা ইমেইল খোঁজা
> db.demo554.find({
$or: [
{ "UserName": /J/ },
{ "UserMailId": /J/ }
]
});
কোয়েরির ব্যাখ্যা
/J/— এই Regex মানে "J" অক্ষর 어ো থাকবে (কেস-সেনসিটিভ)।$or— দুটি শর্তের যেকোনো একটিই সত্য হলে ডকুমেন্ট রিটার্ন করবে।- এখানে "John" এবং "Jace" দুটোই "J" দিয়ে শুরু হয়েছে, তাই দুটি রিটার্ন হবে।
আউটপুট
{ "_id" : ObjectId("5e8f1cfed1d72c4545cb8679"), "UserName" : "John", "UserMailId" : "John@gmail.com" }
{ "_id" : ObjectId("5e8f1d1cd1d72c4545cb867b"), "UserName" : "Jace", "UserMailId" : "Jace@gmail.com" }
উন্নত Regex প্যাটার্ন
| প্যাটার্ন | অর্থ |
|---|---|
/^J/ | "J" দিয়ে শুরু হয় (Beginning) |
/J$/ | "J" দিয়ে শেষ হয় (End) |
/^J.*/ | "J" দিয়ে শুরু হয়, এরপর যেকোনো ক্যারেক্টার |
/J/i | কেস-ইনসেনসিটিভ (Case-insensitive) — "j" বা "J" দুইটোই ম্যাচ করবে |
মূল পয়েন্টসমূহ
- MongoDB-এ Regex Perl-কম্প্যাটিবল (PCRE) সিনট্যাক্স ফলো করে।
- Regex কেস-সেনসিটিভ হয় ডিফল্টে;
iঅপশন দিয়ে কেস-ইনসেনসিটিভ করা যায়। - বড় ডেটাসেটে Regex ধীর হতে পারে; সম্ভব হলে
^pattern(prefix) ব্যবহার করুন যাতে ইন্ডেক্স ব্যবহার করতে পারে। $orব্যবহার করে একাধিক ফিল্ডে একই প্যাটার্ন খোঁজা যায়।