MongoDB-তে একাধিক ডকুমেন্ট জুড়ে নেস্টেড অ্যারেতে ইউনিক ভ্যালুর সংখ্যা বের করতে অ্যাগ্রিগেশন পাইপলাইনে $unwind, $group, $addToSet এবং $size একসাথে ব্যবহার করা হয়।
উদাহরণ: গ্রুপ এবং অন্যান্য ডিটেইলস সহ ডকুমেন্ট
> db.demo718.insertOne({
"id": 101,
"details": { "OtherDetails": ["Chris", "Mike", "Sam"], "GroupName": ["Group-1"], "Info": [] }
});
> db.demo718.insertOne({
"id": 102,
"details": { "OtherDetails": ["Chris", "David"], "GroupName": ["Group-1"], "Info": [] }
});
অ্যাগ্রিগেশন পাইপলাইন: Group-1-এর ইউনিক OtherDetails গণনা
> db.demo718.aggregate([
{ $unwind: "$details.GroupName" },
{ $match: { "details.GroupName": "Group-1" } },
{ $unwind: "$details.OtherDetails" },
{ $group: {
_id: "$details.GroupName",
OtherDetailsUnique: { $addToSet: "$details.OtherDetails" }
}},
{ $project: {
_id: 0,
GROUP_NAME: "$_id",
OtherDetailsUniqueCount: { $size: "$OtherDetailsUnique" }
}}
]);
আউটপুট:
{ "GROUP_NAME" : "Group-1", "OtherDetailsUniqueCount" : 4 }
প্রক্রিয়া:
$unwind- GroupName এবং OtherDetails অ্যারে ফ্ল্যাটেন করা$match- শুধু Group-1 ফিল্টার করা$group+$addToSet- ইউনিক নামগুলো সেটে সংগ্রহ করা$project+$size- সেটের সাইজ (ইউনিক কাউন্ট) বের করা