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

MongoDB-এ ফিল্ড ভ্যালুকে $regex প্যাটার্ন হিসেবে ব্যবহার করা

MongoDB-এ কোনো ফিল্ডের মানকে অন্য ফিল্ডে রেগুলার এক্সপ্রেশন (regex) প্যাটার্ন হিসেবে ব্যবহার করতে $indexOfCP (code point index) অপারেটর ব্যবহার করা যায়। এটি $regex-এর চেয়ে দ্রুত এবং কার্যকর।

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

> db.demo88.insertOne({
...   "Name": "Chris",
...   "PassoutYear": "2020",
...   "websiteName": "chris.shop.com/Carol-2020-"
... });
{ "acknowledged" : true, "insertedId" : ObjectId("5e2c14c471bf0181ecc422b1") }
> db.demo88.insertOne({
...   "Name": "David",
...   "PassoutYear": "2010",
...   "websiteName": "david.bigshop.com/David-2010-"
... });
{ "acknowledged" : true, "insertedId" : ObjectId("5e2c14c571bf0181ecc422b2") }

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

> db.demo88.find();

আউটপুট:

{ "_id" : ObjectId("5e2c14c471bf0181ecc422b1"), "Name" : "Chris", "PassoutYear" : "2020", "websiteName" : "chris.shop.com/Carol-2020-" }
{ "_id" : ObjectId("5e2c14c571bf0181ecc422b2"), "Name" : "David", "PassoutYear" : "2010", "websiteName" : "david.bigshop.com/David-2010-" }

ফিল্ড ভ্যালুকে প্যাটার্ন হিসেবে ব্যবহার করে কোয়ারী

$indexOfCP ব্যবহার করে websiteName-এ Name ফিল্ডের মান আছে কিনা চেক করা হয়েছে:

> db.demo88.aggregate([
...   { "$match": {
...     "$expr": {
...       "$ne": [
...         { "$indexOfCP": ["$websiteName", "$Name"] },
...         -1
...       ]
...     }
...   }}
... ]);

ফলাফল

{ "_id" : ObjectId("5e2c14c571bf0181ecc422b2"), "Name" : "David", "PassoutYear" : "2010", "websiteName" : "david.bigshop.com/David-2010-" }

ব্যাখ্যা:

  • প্রথম ডকুমেন্ট: websiteName-এ "Chris" নেই (Carol আছে) → -১ রিটার্ন → বাদ
  • দ্বিতীয় ডকুমেন্ট: websiteName-এ "David" আছে → পজিশন ০ বা অধিক → রিটার্ন

$indexOfCP vs $regex:

ফিচার$indexOfCP$regex
পারফরম্যান্সদ্রুত (ইনডেক্স ব্যবহার করতে পারে)ধীর (সাধারণত ফুল স্ক্যান)
কেস সেনসিটিভহ্যাঁকনফিগারেবল (i অপশন)
ফিল্ড রেফারেন্সসহজ (এক্সপ্রেশন)কঠিন (জাভাস্ক্রিপ্ট ফাংশন লাগে)

নোট: $indexOfCP ইউনিকোড কোড পয়েন্ট অনুযায়ী কাজ করে, $indexOfBytes বাইট অনুযায়ী। বাংলা/ইমোজির জন্য $indexOfCP সঠিক।

  1. MongoDB কোয়ারী: আইডি যদি ডকুমেন্ট ফিল্ড অ্যারে মানের সমান হয় তবে বাদ দেওয়া

  2. MongoDB Aggregation-এ নির্দিষ্ট ফিল্ড মান মэтচ করা ($match স্টেজ)

  3. MongoDB Aggregation-এ নির্দিষ্ট ফিল্ড মান অনুযায়ী ডকুমেন্ট ফিল্টার করা

  4. MongoDB-তে find()-এ প্রজেকশন দিয়ে _id ফিল্ড হাইড করা