কম্পিউটার টিউটোরিয়াল

MongoDB-তে অ্যারের ইউনিক প্রোপার্টি অনুযায়ী গ্রুপ করে প্রাইস যোগ করা ($cond + $group)

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" দেখানো হয়েছে।

  1. MongoDB-তে distinct() ব্যবহার করে ইউনিক ভ্যালু বের করা

  2. MongoDB অ্যাগ্রিগেশন: নেস্টেড অ্যারে এলিমেন্টের গড় (Average) বের করা ($avg + $unwind)

  3. MongoDB কালেকশন থেকে সব ফিল্ড নাম দক্ষতার সাথে রিট্রিভ করুন

  4. MongoDB কালেকশনে সকল কি নাম সহজে রিট্রিভ করুন