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

MongoDB রেগুলার এক্সপ্রেশন: কেস-সেনসিটিভ নাম "John" খুঁজে বের করা (নয় "john")

MongoDB-এ কেস-সেনসিটিভ (case-sensitive) স্ট্রিং ম্যাচ করার জন্য রেগুলার এক্সপ্রেশন /pattern/ সিনট্যাক্স ব্যবহার করা হয়। ডিফল্টভাবে এটি কেস-সেনসিটিভ।

কলেকশন এবং ডকুমেন্ট তৈরি

> db.demo221.insertOne({"Details":{"StudentName":"Chris","StudentAge":21}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3ee15d03d395bdc213472b") }
> db.demo221.insertOne({"Details":{"StudentName":"John","StudentAge":20}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3ee16503d395bdc213472c") }
> db.demo221.insertOne({"Details":{"StudentName":"Bob","StudentAge":22}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3ee16b03d395bdc213472d") }
> db.demo221.insertOne({"Details":{"StudentName":"john","StudentAge":24}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3ee17303d395bdc213472e") }

সব ডকুমেন্ট দেখানো

> db.demo221.find();

আউটপুট (John এবং john দুটো আলাদা):

{ "_id" : ObjectId("5e3ee15d03d395bdc213472b"), "Details" : { "StudentName" : "Chris", "StudentAge" : 21 } }
{ "_id" : ObjectId("5e3ee16503d395bdc213472c"), "Details" : { "StudentName" : "John", "StudentAge" : 20 } }
{ "_id" : ObjectId("5e3ee16b03d395bdc213472d"), "Details" : { "StudentName" : "Bob", "StudentAge" : 22 } }
{ "_id" : ObjectId("5e3ee17303d395bdc213472e"), "Details" : { "StudentName" : "john", "StudentAge" : 24 } }

কেস-সেনসিটিভ "John" খুঁজে বের করার কোয়ারী

/John/ রেগুলার এক্সপ্রেশন ব্যবহার করা হয়েছে (কেস-সেনসিটিভ):

> db.demo221.find({"Details.StudentName": /John/});

ফলাফল

{ "_id" : ObjectId("5e3ee16503d395bdc213472c"), "Details" : { "StudentName" : "John", "StudentAge" : 20 } }

ব্যাখ্যা: শুধু "John" (বড় J) মেলেছে, "john" (ছোট j) মেলেনি।

রেগুলার এক্সপ্রেশন ভেরিয়েশন:

প্যাটার্নব্যাখ্যামেলে যাবে
/John/কেস-সেনসিটিভ, কন্টেইনস"John", "John Doe", "Dear John"
/^John$/এক্সাক্ট ম্যাচ (শুরু এবং শেষ)"John" মাত্র
/john/iকেস-ইনসেনসিটিভ (i ফ্ল্যাগ)"John", "john", "JOHN", "JoHn"
/^J.*n$/J দিয়ে শুরু, n দিয়ে শেষ"John", "Jean", "Jason"

পারফরম্যান্স টিপস:

  • রেজেক্স ইনডেক্স ব্যবহার করে না (সাধারণত) - ফুল স্ক্যান করে
  • ^ (শুরু) দিয়ে প্যাটার্ন দিলে ইনডেক্স ব্যবহার করতে পারে (prefix match)
  • বড় কালেকশনে টেক্সট ইনডেক্স (db.createIndex({field: "text"})) এবং $text কোয়ারী ব্যবহার করুন

$regex অপারেটর সিনট্যাক্স (অবজেক্ট ফরম্যাট):

db.demo221.find({ "Details.StudentName": { $regex: "John", $options: "i" } })

এটি ভেরিয়েবল/ডাইনামিক প্যাটার্নের জন্য উপযোগী।

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

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

  3. MongoDB-এ অ্যারে কোয়েরি করে নির্দিষ্ট ভ্যালু ফেচ করা

  4. MySQL-এ নির্দিষ্ট ডুপ্লিকেট রেকর্ড নতুন ভ্যালু দিয়ে রিপ্লেস করা