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

MongoDB-এ অ্যারে থেকে নির্দিষ্ট মান বাদ দেওয়া ডকুমেন্ট খুঁজে বের করা

MongoDB-এ রেজেক্স ব্যবহার করে অ্যারে ফিল্টারিং

যখন একটি অ্যারে ফিল্ডে নির্দিষ্ট কিছু মান বাদ দিয়ে অন্য মান থাকা ডকুমেন্ট খুঁজতে হয়, তবে রেজেক্স (Regular Expression) ব্যবহার করা একটি কার্যকর পদ্ধতি। নিচে উদাহরণ দেওয়া হলো।

নমুনা ডেটা তৈরি

> db.demo228.insertOne({"Subjects":["MongoDB","Java"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3fa51f03d395bdc213473b") }
> db.demo228.insertOne({"Subjects":["MongoDB","Java","MySQL"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3fa52c03d395bdc213473c") }

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

> db.demo228.find();

আউটপুট:

{ "_id" : ObjectId("5e3fa51f03d395bdc213473b"), "Subjects" : [ "MongoDB", "Java" ] }
{ "_id" : ObjectId("5e3fa52c03d395bdc213473c"), "Subjects" : [ "MongoDB", "Java", "MySQL" ] }

MongoDB এবং Java বাদ দিয়ে অন্য বিষয় থাকা ডকুমেন্ট খুঁজে বের করা

> db.demo228.find({ "Subjects": /^(?!MongoDB|Java)/ });

আউটপুট:

{ "_id" : ObjectId("5e3fa52c03d395bdc213473c"), "Subjects" : [ "MongoDB", "Java", "MySQL" ] }

রেজেক্স ব্যাখ্যা

  • ^(?!MongoDB|Java) — নেগেটিভ লুকঅহেড (Negative Lookahead) ব্যবহার করে "MongoDB" বা "Java" ছাড়া যেকোনো স্ট্রিং ম্যাচ করে
  • দ্বিতীয় ডকুমেন্টে "MySQL" থাকায় সেটি ফলাফলে আসেছে

বিকল্প পদ্ধতি: $nin অপারেটর

আধুনিক MongoDB সংস্করণে আরও পঠনীয় পদ্ধতি:

> db.demo228.find({ "Subjects": { $nin: ["MongoDB", "Java"] } });

এটি একই ফলাফল দেবে কিন্তু বুঝতে এবং রক্ষণাবেক্ষণ করতে সহজ।

  1. MongoDB-তে অ্যারে ফিল্ড থেকে নির্দিষ্ট নামের তালিকা পাওয়া

  2. MongoDB-এ ডকুমেন্ট থেকে অ্যারে ভ্যালু ডিলিট করা

  3. MongoDB-এ নির্দিষ্ট অ্যারে এলিমেন্ট সমाहিত ডকুমেন্ট খোঁজা ($all অপারেটর)

  4. MongoDB-এ এমবেডেড ডকুমেন্ট থেকে নির্দিষ্ট এলিমেন্ট খুঁজে বের করা