অ্যারে অবজেক্টের মধ্যে একাধিক শর্ত একসাথে ম্যাচ করতে $and এবং $regex সাথে $elemMatch ব্যবহার করুন। একটি কালেকশন তৈরি করুন:
> db.demo525.insertOne({"details":[{Name:"Chris","CountryName":"US"}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8ae5ef437efc8605595b66") }
> db.demo525.insertOne({"details":[{Name:"Bob","CountryName":"UK"}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8ae5f8437efc8605595b67") }
> db.demo525.insertOne({"details":[{Name:"chris","CountryName":"us"}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8ae602437efc8605595b68") }
> db.demo525.insertOne({"details":[{Name:"Mike","CountryName":"UK"}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8ae60b437efc8605595b69") }
find() দিয়ে ডকুমেন্ট দেখান:
> db.demo525.find();
আউটপুট:
নাম "Chris" (কেস-ইনসেনসিটিভ) এবং কান্ট্রি "us" (কেস-ইনসেনসেনসিটিভ) দুটোই মিলে যাওয়া ডকুমেন্ট বের করা:
> db.demo525.find( {"$and": [ { "details" : { "$elemMatch" :{ "Name": {$regex: new RegExp('^' + 'Chris', 'i')}}}}, { "details" : { "$elemMatch" :{ "CountryName": {$regex: new RegExp('^' + 'us', 'i')}}}} ]} )আউটপুট:
ব্যাখ্যা:
$andদুই শর্ত একসাথে পূরণ করতে বাধ্য করে।$elemMatchনিশ্চিত করে যে একই সাব-ডকুমেন্টে দুটো শর্তই মেনে।new RegExp('^' + 'Chris', 'i')"^Chris" প্যাটার্ন (শুরুতে Chris) কেস-ইনসেনসিটিভভাবে ম্যাচ করে।