$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।