$elemMatch অপারেটরটি অ্যারে ফিল্ডवाले ডকুমেন্টগুলোর মধ্যে কমপক্ষে একটি এলিমেন্ট যদি সব শর্ত পূরণ করে, তবে সেই ডকুমেন্টটি রিটার্ন করে। একাধিক শর্ত একই অ্যারে এলিমেন্টে মিলাতে এটি খুবই কার্যকর।
উদাহরণ: সংখ্যা অ্যারে সহ ডকুমেন্ট
> db.demo701.insertOne({"ListOfValues": [100, 200, 300]});
> db.demo701.insertOne({"ListOfValues": [500, 700, 1000]});
> db.demo701.insertOne({"ListOfValues": [300, 350, 450]});
সব ডকুমেন্ট দেখা
> db.demo701.find();
আউটপুট: তিনটি ডকুমেন্ট ভিন্ন ভিন্ন সংখ্যা অ্যারে সহ।
৫০০-এর বড় মান থাকা ডকুমেন্ট বের করা
> db.demo701.find({ "ListOfValues": { $elemMatch: { $gt: 500 } } });
আউটপুট:
{ "_id" : ..., "ListOfValues" : [ 500, 700, 1000 ] }
ব্যাখ্যা: শুধু দ্বিতীয় ডকুমেন্টে ৫০০-এর বড় মান (৭০০, ১০০০) আছে, তাই সেটি মাত্র ফলাফলে আসে। প্রথম এবং তৃতীয় ডকুমেন্টে ৫০০-এর বড় কোনো মান নেই।
অবজেক্ট অ্যারেতে ব্যবহার: যদি অ্যারেতে অবজেক্ট থাকে (যেমন {name: "A", value: 10}), তবে $elemMatch দিয়ে একই অবজেক্টের একাধিক ফিল্ড মিলানো যায়।