কম্পিউটার টিউটোরিয়াল

MongoDB-এ কেস-ইনসেনসিটিভ (Case-Insensitive) নাম দিয়ে ডকুমেন্ট খোঁজা ($regex /^name$/i)

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-ভিত্তিক ইন্ডেক্স তৈরি করুন পারফরম্যান্সের জন্য।
  1. MongoDB-তে $elemMatch ব্যবহার করে অ্যারে ভ্যালু অনুযায়ী ডকুমেন্ট ফিল্টার করা

  2. MongoDB-তে কেস-ইনসেনসিটিভ (Case-Insensitive) সার্চ করা ($regex)

  3. MongoDB-তে $in অপারেটর ব্যবহার করে নির্দিষ্ট একাধিক ডকুমেন্ট বের করা

  4. MongoDB-এ bulkWrite() দিয়ে এক কোয়েরিতে একাধিক ডকুমেন্ট আপডেট করা