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

MongoDB-এ অ্যারে ফিল্ডে সব এলিমেন্ট ম্যাচ করা ($all অপারেটর)

MongoDB-এ একটি অ্যারে ফিল্ডে নির্দিষ্ট সব এলিমেন্ট আছে কিনা চেক করতে $all অপারেটর ব্যবহার করা হয়। $all সেই ডকুমেন্টগুলো সিলেক্ট করে যেখানে ফিল্ডটি একটি অ্যারে এবং নির্দিষ্ট সকল এলিমেন্টগুলো সেখানে আছে (অর্ডার এবং অতিরিক্ত এলিমেন্ট বিষয়ে চিন্তা করে না)।

উদাহরণ: কালেকশন ও ডেটা তৈরি

> db.demo695.insertOne({ "ListOfValues": [100, 200, 500, 800] });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea6d4c4551299a9f98c938f") }
> db.demo695.insertOne({ "ListOfValues": [1000, 200, 4000] });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea6d4cf551299a9f98c9390") }

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

> db.demo695.find();

আউটপুট:

{ "_id" : ObjectId("5ea6d4c4551299a9f98c938f"), "ListOfValues" : [ 100, 200, 500, 800 ] }
{ "_id" : ObjectId("5ea6d4cf551299a9f98c9390"), "ListOfValues" : [ 1000, 200, 4000 ] }

$all দিয়ে [1000, 200, 4000] সবগুলো থাকা ডকুমেন্ট খোঁজা

> db.demo695.find({ "ListOfValues": { $all: [1000, 200, 4000] } });

আউটপুট

{ "_id" : ObjectId("5ea6d4cf551299a9f98c9390"), "ListOfValues" : [ 1000, 200, 4000 ] }

প্রথম ডকুমেন্টে ১০০০, ৪০০০ নেই, তাই ম্যাচ করেনি।

$all vs $in

অপারেটরব্যবহারউদাহরণ
$allসকল নির্দিষ্ট এলিমেন্ট থাকতে হবে (AND লজিক){ tags: { $all: ["A", "B"] } } — A ও B দুটোই থাকবে
$inনির্দিষ্ট এলিমেন্টগুলোর যেকোনো একটি থাকলে হয় (OR লজিক){ tags: { $in: ["A", "B"] } } — A বা B যেকোনো একটা থাকলে

মূল পয়েন্টসমূহ

  • $all অর্ডার বিবেচনা করে না।
  • $all: [] (খালি অ্যারে) সব ডকুমেন্ট ম্যাচ করবে (ভ্যাকুয়াম ট্রু)۔
  • অ্যারে ফিল্ডে ইন্ডেক্স থাকলে $all ইন্ডেক্স ব্যবহার করতে পারে (Multikey Index)۔
  • অ্যারে নয় এমন ফিল্ডে $all ব্যবহার করলে ভুল দেবে না কিন্তু ম্যাচ করবে না।
  • $elemMatch ব্যবহার করুন যখন একই অ্যারে এলিমেন্টে একাধিক শর্ত লাগাতে হয়।
  1. MongoDB $match ব্যবহার করে ডেট ম্যাচ করা

  2. MongoDB অগরিগেশনে ম্যাক্স ভ্যালু সহ অ্যারে এলিমেন্ট ম্যাচ এবং গ্রুপ করা

  3. MongoDB-এ স্টোরড জাভাস্ক্রিপ্ট ফাংশন ব্যবহার করা

  4. MongoDB-তে $elemMatch ব্যবহার করে অ্যারে ভ্যালু অনুযায়ী ডকুমেন্ট ফিল্টার করা