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

MongoDB-এ অ্যারে-এর সব এলিমেন্ট নির্দিষ্ট ভ্যালু আছে কিনা চেক করে ডকুমেন্ট খোঁজা


$elemMatch এবং $not ব্যবহার করে অ্যারে-এ সব এলিমেন্ট ম্যাচ করানো

MongoDB-এ একটি অ্যারে ফিল্ডের সব এলিমেন্ট নির্দিষ্ট শর্ত পূরণ করছে কিনা চেক করতে $elemMatch সাথে $not ও $ne (Not Equal) কম্বাইন করে ব্যবহার করা হয়।

১. কালেকশন ও নমুনা ডেটা তৈরি

> db.demo15.insertOne({"Details":[{"Score":56},{"Score":78}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e0f7806d7df943a7cec4fab") }
> db.demo15.insertOne({"Details":[{"Score":86},{"Score":86}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e0f7817d7df943a7cec4fac") }
> db.demo15.insertOne({"Details":[{"Score":97},{"Score":85}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e0f7823d7df943a7cec4fad") }

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

> db.demo15.find();

আউটপুট:

{ "_id" : ObjectId("5e0f7806d7df943a7cec4fab"), "Details" : [ { "Score" : 56 }, { "Score" : 78 } ] }
{ "_id" : ObjectId("5e0f7817d7df943a7cec4fac"), "Details" : [ { "Score" : 86 }, { "Score" : 86 } ] }
{ "_id" : ObjectId("5e0f7823d7df943a7cec4fad"), "Details" : [ { "Score" : 97 }, { "Score" : 85 } ] }

৩. কোয়েরি: যেখানে Details অ্যারে-র সব Score 86

> db.demo15.find({
    "Details.Score" : { "$exists" : true },
    "Details" : {
      $not : {
        $elemMatch : {
          "Score" : { "$ne" : 86 }
        }
      }
    }
  });

লজিক ব্যাখ্যা:

  • Details.Score: {$exists: true} - Score ফিল্ড আছে কিনা চেক।
  • $elemMatch: {Score: {$ne: 86}} - যেই এলিমেন্টগুলো 86 নয়।
  • $not - সেই এলিমেন্টগুলো নেই মানে সব এলিমেন্ট 86।

৪. ফলাফল

{ "_id" : ObjectId("5e0f7817d7df943a7cec4fac"), "Details" : [ { "Score" : 86 }, { "Score" : 86 } ] }

শুধু দ্বিতীয় ডকুমেন্ট ফেরত এসেছে, কারণ এর Details অ্যারে-র দুটি এলিমেন্টই Score: 86।


  1. MongoDB-তে নির্দিষ্ট মান থেকে বড় বা সমান ভ্যালু খোঁজা ($gte)

  2. MongoDB ডকুমেন্টের নির্দিষ্ট ফিল্ড থেকে অ্যারে এলিমেন্ট কাউন্ট করা

  3. MongoDB-এ অ্যারে কোয়েরি করে নির্দিষ্ট ভ্যালু ফেচ করা

  4. পাইথনে k এমন মান বের করা যাতে ঠিক kটি এলিমেন্ট >= k হয়