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

MongoDB-এ অ্যারেতে দুটি মান একাধিক শর্ত পূরণ করে ক্যোয়ারি করার পদ্ধতি

MongoDB-এ অ্যারেতে একাধিক শর্ত (যেমন: একটি এলিমেন্ট ৭৭-৭৮ এর মধ্যে, অন্যটি ৯০-১১০ এর মধ্যে, এবং তৃতীয় এলিমেন্ট নেই) পূরণ করা ডকুমেন্ট বের করতে $elemMatch এবং $and ব্যবহার করুন।

উদাহরণ

দুটি ডকুমেন্ট তৈরি করুন:

> db.findDocumentsHaving2Demo.insertOne({ _id: 101, Values: [78, 98] });
{ "acknowledged" : true, "insertedId" : 101 }

> db.findDocumentsHaving2Demo.insertOne({ _id: 102, Values: [89, 102] });
{ "acknowledged" : true, "insertedId" : 102 }

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

> db.findDocumentsHaving2Demo.find().pretty();

আউটপুট:

{ "_id" : 101, "Values" : [ 78, 98 ] }
{ "_id" : 102, "Values" : [ 89, 102 ] }

শর্ত: ১) ৭৭-৭৮ রেঞ্জে একটি মান, ২) ৯০-১১০ রেঞ্জে একটি মান, ৩) ৩য় এলিমেন্ট নেই

> db.findDocumentsHaving2Demo.find({
    $and: [
        { Values: { $elemMatch: { $gte: 77, $lte: 78 } } },
        { Values: { $elemMatch: { $gte: 90, $lte: 110 } } },
        { 'Values.2': { $exists: false } }
    ]
});

আউটপুট:

{ "_id" : 101, "Values" : [ 78, 98 ] }

ব্যাখ্যা:

  • Values.2 — ০-ভিত্তিক ইনডেক্স, অর্থাৎ ৩য় এলিমেন্ট। $exists: false মানে ৩য় এলিমেন্ট নেই।
  • $elemMatch — প্রতিটি শর্ত আলাদা এলিমেন্টে পূরণ হতে পারে (এখানে ৭৮ এবং ৯৮ আলাদা এলিমেন্ট)।
  • $and — তিনটি শর্ত একসাথে পূরণ করতে হবে।

কেন _id: 102 বাদ পড়েছে?

  • প্রথম শর্ত: ৮৯ ৭৭-৭৮ রেঞ্জে নয়।
  • দ্বিতীয় শর্ত: ১০২ ৯০-১১০ রেঞ্জে আছে।
  • তবে প্রথম শর্ত পূরণ হয়নি।

নোট: যদি একই এলিমেন্টে একাধিক শর্ত পূরণ করতে হয়, তবে একই $elemMatch অবজেক্টে সব শর্ত দিন।

  1. MongoDB-তে অ্যারে থেকে একাধিক মান বের করার কোয়ারি

  2. MongoDB-এ নির্দিষ্ট মানগুলোর সাথে ম্যাচ হওয়া ডকুমেন্ট খুঁজে বের করা

  3. MongoDB-এ অ্যারে অবজেক্টের মধ্যে একাধিক শর্ত ম্যাচ করা

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