MongoDB-এ কোনো ফিল্ডের মান কেস-ইনসেনসিটিভভাবে (বড়/ছোট হাতের অক্ষর অবজ্ঞা করে) এক্সাক্ট ম্যাচ (exact match) করতে $regex অপারেটর সাথে ^pattern$ (অ্যাঙ্কর) এবং i ফ্ল্যাগ ব্যবহার করা হয়।
উদাহরণ: কালেকশন ও ডেটা তৈরি
> db.demo700.insertOne({ details: [ { Name: "david" } ] });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea6e6b1551299a9f98c93ac") }
> db.demo700.insertOne({ details: [ { Name: "Chris" } ] });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea6e6b9551299a9f98c93ad") }
> db.demo700.insertOne({ details: [ { Name: "DAVID" } ] });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea6e6bf551299a9f98c93ae") }
> db.demo700.insertOne({ details: [ { Name: "David" } ] });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea6e6c4551299a9f98c93af") }
সব ডকুমেন্ট দেখানো
> db.demo700.find();
আউটপুট:
{ "_id" : ObjectId("5ea6e6b1551299a9f98c93ac"), "details" : [ { "Name" : "david" } ] }
{ "_id" : ObjectId("5ea6e6b9551299a9f98c93ad"), "details" : [ { "Name" : "Chris" } ] }
{ "_id" : ObjectId("5ea6e6bf551299a9f98c93ae"), "details" : [ { "Name" : "DAVID" } ] }
{ "_id" : ObjectId("5ea6e6c4551299a9f98c93af"), "details" : [ { "Name" : "David" } ] }
Regex দিয়ে "David" (কেস-ইনসেনসিটিভ) খোঁজা
> db.demo700.find({ "details.Name": { $regex: /^David$/i } });
Regex ব্যাখ্যা
/^David$/i:^— স্ট্রিং শুরু।David— লিটারাল "David"।$— স্ট্রিং শেষ।i— কেস-ইনসেনসিটিভ (Case-insensitive) ফ্ল্যাগ।
- এটি "david", "DAVID", "David", "DaViD" — সব ম্যাচ করবে। "Davidson" ম্যাচ করবে না (
$miatt)۔
আউটপুট
{ "_id" : ObjectId("5ea6e6b1551299a9f98c93ac"), "details" : [ { "Name" : "david" } ] }
{ "_id" : ObjectId("5ea6e6bf551299a9f98c93ae"), "details" : [ { "Name" : "DAVID" } ] }
{ "_id" : ObjectId("5ea6e6c4551299a9f98c93af"), "details" : [ { "Name" : "David" } ] }
"Chris" ম্যাচ করেনি।
অপশনাল সিনট্যাক্স: $regex + $options
> db.demo700.find({ "details.Name": { $regex: "^David$", $options: "i" } });
এটি একই ফলাফল দেবে। ভেরিয়েবল ব্যবহার করলে এই ফরম্যাটটি ব্যবহার করুন।
মূল পয়েন্টসমূহ
^pattern$এক্সাক্ট স্ট্রিং ম্যাচ নিশ্চিত করে (পারশিয়াল ম্যাচ নয়)।iফ্ল্যাগ কেস-ইনসেনসিটিভ করে।- নেস্টেড অ্যারে ফিল্ড (
details.Name) এ ডট নোটেশন কাজ করে। - ইন্ডেক্স: কেস-ইনসেনসিটিভ রেজেক্স সাধারণত ইন্ডেক্স ব্যবহার করে না; Collation-ভিত্তিক ইন্ডেক্স তৈরি করুন পারফরম্যান্সের জন্য।