MongoDB-এ অ্যারে অফ অবজেক্টস থেকে নির্দিষ্ট শর্ত পূরণ করা এলিমেন্ট (সাব-ডকুমেন্ট) থাকা ডকুমেন্ট বের করতে $elemMatch অপারেটর ব্যবহার করুন।
উদাহরণ
অ্যারে অফ অবজেক্টস সহ ডকুমেন্ট তৈরি করুন:
> db.getMatchingDocumentDemo.insertOne({
_id: 1,
"UserDetails": [ { "UserName": "John", "UserAge": 23 } ]
});
{ "acknowledged" : true, "insertedId" : 1 }
> db.getMatchingDocumentDemo.insertOne({
_id: 2,
"UserDetails": [ { "UserName": "Larry", "UserAge": 24 } ]
});
{ "acknowledged" : true, "insertedId" : 2 }
সকল ডকুমেন্ট দেখুন:
> db.getMatchingDocumentDemo.find().pretty();
আউটপুট:
{ "_id" : 1, "UserDetails" : [ { "UserName" : "John", "UserAge" : 23 } ] }
{ "_id" : 2, "UserDetails" : [ { "UserName" : "Larry", "UserAge" : 24 } ] }
UserAge = 24 থাকা সাব-ডকুমেন্ট கொண்ட ডকুমেন্ট বের করা
> db.getMatchingDocumentDemo.find({ UserDetails: { $elemMatch: { UserAge: 24 } } });
আউটপুট:
{ "_id" : 2, "UserDetails" : [ { "UserName" : "Larry", "UserAge" : 24 } ] }
ব্যাখ্যা:
$elemMatch— অ্যারেতে একই এলিমেন্টে একাধিক শর্ত পূরণ হলে ম্যাচ করে।- এখানে শুধু
UserAge: 24শর্ত, তাই সেই এলিমেন্ট ম্যাচ করল। - বिना
$elemMatchলিখলে:{ "UserDetails.UserAge": 24 }— এটি ও কাজ করবে একক শর্তের জন্য।
$elemMatch প্রয়োজন যখন: একই সাব-ডকুমেন্টে একাধিক শর্ত থাকে। উদাহরণ:
db.getMatchingDocumentDemo.find({
UserDetails: { $elemMatch: { UserAge: { $gte: 20 }, UserName: "Larry" } }
});
এটি নিশ্চিত করে UserAge >= 20 এবং UserName: "Larry" একই অবজেক্টে থাকে।