MongoDB-তে একাধিক ডকুমেন্টে একটি ফিল্ড (Id1) অন্য ফিল্ড (Id2) খালি থাকলে সেটি ব্যবহার করে ইউনিক আইডেন্টিফায়ার বানাতে এবং সেগুলো অনুযায়ী প্রাইস যোগ করতে $cond, $group, $addToSet একসাথে ব্যবহার করা হয়।
উদাহরণ: Id1, Id2, Price সহ ডকুমেন্ট
> db.demo580.insertOne({ "Name": "John", "Id1": "110", "Id2": "111", "Price": 10.5 });
> db.demo580.insertOne({ "Name": "John", "Id1": "111", "Id2": "", "Price": 9.5 });
জটিল অ্যাগ্রিগেশন পাইপলাইন
> db.demo580.aggregate([
{ $project: {
Id1: 1, Id2: 1, Price: 1,
match: { $cond: [ { $eq: ["$Id2", ""] }, "$Id1", "$Id2" ] }
}},
{ $group: {
_id: '$match',
Price: { $sum: '$Price' },
resultId: { $addToSet: { $cond: [ { $eq: ['$match', '$Id1'] }, null, '$Id1' ] } }
}},
{ $unwind: '$resultId' },
{ $match: { resultId: { $ne: null } } },
{ $project: { Id1: '$resultId', Price: 1, _id: 0 } }
]);
আউটপুট:
{ "Price" : 20, "Id1" : "110" }
লজিক: দ্বিতীয় ডকুমেন্টে Id2 খালি, তাই Id1 ("111") কে ম্যাচ কী হিসেবে নেওয়া হয়েছে। প্রথম ডকুমেন্টে Id2 "111", তাই সেটিও একই গ্রুপে পড়ে। দুটি প্রাইস (10.5 + 9.5 = 20) যোগ হয়েছে। ফাইনাল আউটপুটে ইউনিক আইডি "110" দেখানো হয়েছে।