MongoDB-এ URL বা ডোমেইন ফিল্ডে কেস-ইনসেনসিটিভ (case-insensitive) সার্চ করতে রেগুলার এক্সপ্রেশনে /i ফ্ল্যাগ ব্যবহার করা হয়।
কলেকশন এবং ডকুমেন্ট তৈরি
> db.demo219.insertOne({"details":{"WebsiteURL":"www.EXAMPLE.com"}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3e667203d395bdc2134718") }
> db.demo219.insertOne({"details":{"WebsiteURL":"www.gmail.com"}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3e667803d395bdc2134719") }
> db.demo219.insertOne({"details":{"WebsiteURL":"www.example.com"}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3e667f03d395bdc213471a") }
সব ডকুমেন্ট দেখানো
> db.demo219.find();
আউটপুট:
{ "_id" : ObjectId("5e3e667203d395bdc2134718"), "details" : { "WebsiteURL" : "www.EXAMPLE.com" } }
{ "_id" : ObjectId("5e3e667803d395bdc2134719"), "details" : { "WebsiteURL" : "www.gmail.com" } }
{ "_id" : ObjectId("5e3e667f03d395bdc213471a"), "details" : { "WebsiteURL" : "www.example.com" } }
নির্দিষ্ট ডোমেইন সার্চ করার কোয়ারী
/example/i রেগুলার এক্সপ্রেশন ব্যবহার করে "example" শব্দ কেস-ইনসেনসিটিভভাবে খুঁজে বের করা হয়েছে:
> db.demo219.find({"details.WebsiteURL": /example/i});
ফলাফল
{ "_id" : ObjectId("5e3e667203d395bdc2134718"), "details" : { "WebsiteURL" : "www.EXAMPLE.com" } }
{ "_id" : ObjectId("5e3e667f03d395bdc213471a"), "details" : { "WebsiteURL" : "www.example.com" } }
ব্যাখ্যা: "EXAMPLE.com" (আপারকেস) এবং "example.com" (লোয়ারকেস) - দুটোই "example" প্যাটার্নে মেলেছে /i ফ্ল্যাগের কারণে। "gmail.com" মেলেনি।
রেগুলার এক্সপ্রেশন ফ্ল্যাগসমূহ:
i- কেস-ইনসেনসিটিভm- মাল্টিলাইন (^ এবং $ লাইন-ব্রেকে মেলাবে)x- এক্সটেনডেড (whitespace এবং কমেন্ট игноর)s- ডট (.) নিউলাইনও মেলাবে
$regex অপারেটর সিনট্যাক্স (ডাইনামিক প্যাটার্নের জন্য):
db.demo219.find({ "details.WebsiteURL": { $regex: "example", $options: "i" } })
ডোমেইন-স্পেসিফিক সার্চ (সাবডোমেইন এড়াতে):
// "example.com" এক্সাক্ট ডোমেইন (সাবডোমেইন বাদে)
db.demo219.find({ "details.WebsiteURL": { $regex: "^https?://([^/]+\\.)?example\\.com", $options: "i" } })
পারফরম্যান্স নোট: রেজেক্স সাধারণত ইনডেক্স ব্যবহার করে না। বড় ডেটাসেটে:
- টেক্সট ইনডেক্স +
$textকোয়ারী (ফুল-টেক্সট সার্চ) - আপারকেস/লোয়ারকেস নরমালাইজড ফিল্ড আলাদা রাখুন
- Atlas Search বা Elasticsearch ইন্টিগ্রেশন