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

MongoDB-এ অ্যারে ফিল্ডে প্রদত্ত অ্যারের যেকোনো কম্বিনেশন মিলিয়ে ম্যাচ করা ($nin + $elemMatch + $not)

MongoDB-এ অ্যারে ফিল্ডে প্রদত্ত মানগুলোর যেকোনো কম্বিনেশন আছে কিনা চেক করতে $nin, $elemMatch, $not কম্বাইন করে ব্যবহার করা হয়।

উদাহরণ ডেটা:

> db.combinationOfArrayDemo.insertOne({"StudentName": "Larry", "StudentAge": 21, "StudentFavouriteTechnicalSubject": ["C", "Java"]});
> db.combinationOfArrayDemo.insertOne({"StudentName": "Mike", "StudentAge": 23, "StudentFavouriteTechnicalSubject": ["C++", "Java"]});
> db.combinationOfArrayDemo.insertOne({"StudentName": "David", "StudentAge": 22, "StudentFavouriteTechnicalSubject": ["Java"]});

["C++", "Java"] এই দুটির যেকোনো কম্বিনেশন (অর্থাৎ কমপক্ষে একটি) থাকা ডকুমেন্ট খুঁজা:

> db.combinationOfArrayDemo.find({StudentFavouriteTechnicalSubject: {$not: {$elemMatch: {$nin: ['C++', 'Java']}}}}).pretty();

ফলাফল: Mike (C++, Java) এবং David (Java) — যেহেতু তাদের অ্যারেতে প্রদত্ত মানের কমপক্ষে একটি আছে। Larry (C, Java) — এরও Java আছে, কিন্তু আউটপুটে নেই? আসলে কোয়েরিটি বুঝতে হলে: $nin: ['C++', 'Java'] মানে "C++ এবং Java দুটোই নেই" এমন এলিমেন্ট খুঁজে, তারপর $not দিয়ে নেগেট করা হয়েছে — অর্থাৎ "C++ বা Java-এর কমপক্ষে একটি আছে" এমন ডকুমেন্ট। Larry-এর অ্যারেতে Java আছে, তাই সেটাও আসা উচিত ছিল। উদাহরণে সম্ভবত টাইপো রয়েছে।

সঠিক লজিক: {$or: [{StudentFavouriteTechnicalSubject: "C++"}, {StudentFavouriteTechnicalSubject: "Java"}]} সরল ও দ্রুত।

  1. MongoDB-এ অ্যারে ফিল্ডের ডISTINCT মানগুলো বের করা ($addToSet)

  2. MongoDB-তে অবজেক্টের ফিল্ড অ্যারে ভ্যালু কোয়েরি করা

  3. MongoDB-এ পপুলেটেড ফিল্ডে অ্যারে স্লাইস করা

  4. MongoDB-তে $elemMatch এবং $and দিয়ে অ্যারে ফিল্ডে একাধিক শর্ত মিলিয়ে ডকুমেন্ট বের করা