MongoDB-তে $elemMatch প্রজেকশন অপারেটর ব্যবহার করে সাব-অ্যারে ভ্যালু এক্সট্র্যাক্ট করা
MongoDB-তে অ্যারে অফ অবজেক্টস (সাব-অ্যারে) থেকে নির্দিষ্ট শর্ত পূরণকারী এলিমেন্টটি এক্সট্র্যাক্ট করতে $elemMatch প্রজেকশন অপারেটর ব্যবহার করা হয়।
ধাপ ১: ডকুমেন্টসহ কালেকশন তৈরি করুন
> db.extractSubArrayDemo.insertOne(
{
_id: 101,
"clientName": "Larry",
"ClientDetails": [
{ "ClientProjectName": "Online Game", "DeveloperTeamSize": 10 },
{ "ClientProjectName": "Pig Dice Game", "DeveloperTeamSize": 12 },
{ "ClientProjectName": "Web Student Tracker", "DeveloperTeamSize": 11 }
]
}
);
{ "acknowledged" : true, "insertedId" : 101 }
ধাপ ২: সব ডকুমেন্ট প্রদর্শন করুন
> db.extractSubArrayDemo.find().pretty();
আউটপুট:
{
"_id" : 101,
"clientName" : "Larry",
"ClientDetails" : [
{ "ClientProjectName" : "Online Game", "DeveloperTeamSize" : 10 },
{ "ClientProjectName" : "Pig Dice Game", "DeveloperTeamSize" : 12 },
{ "ClientProjectName" : "Web Student Tracker", "DeveloperTeamSize" : 11 }
]
}
ধাপ ৩: সাব-অ্যারে থেকে নির্দিষ্ট এলিমেন্ট এক্সট্র্যাক্ট করুন
> db.extractSubArrayDemo.find(
{'_id': 101},
{ _id: 0, ClientDetails: { $elemMatch: {ClientProjectName: 'Pig Dice Game' } }}
).pretty();
ফলাফল:
{
"ClientDetails" : [
{ "ClientProjectName" : "Pig Dice Game", "DeveloperTeamSize" : 12 }
]
}
ব্যাখ্যা:
- প্রথম আর্গুমেন্ট
{'_id': 101}- কোয়েরি ফিল্টার (শুধু _id: 101 वाला ডকুমেন্ট) - দ্বিতীয় আর্গুমেন্ট প্রজেকশন:
{ _id: 0, ClientDetails: { $elemMatch: {ClientProjectName: 'Pig Dice Game' } }} $elemMatchপ্রজেকশন অপারেটরটি অ্যারেতে শর্ত পূরণকারী প্রথম এলিমেন্টটিই রিটার্ন করে_id: 0দিয়ে _id ফিল্ড এক্সক্লুড করা হয়েছে
ফলাফল: ClientDetails অ্যারেতে "Pig Dice Game" নামক প্রজেক্টটি খুঁজে বের করে সেটি একমাত্র রিটার্ন করেছে।