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

MongoDB-এ প্রথম টেস্টের স্কোর গড়ের চেয়ে কম হলে ছাত্রের নাম বের করা


টেস্ট স্কোর গড়ের সাথে তুলনা করে ছাত্র বের করা

সব টেস্টের গড় স্কোর বের করে, যাদের প্রথম টেস্টের স্কোর (Value1) সেটির চেয়ে কম তাদের নাম খুঁজে বের করতে অ্যাগ্রিগেশন ফ্রেমওয়ার্ক ব্যবহার করা হয়।

নমুনা ডেটা তৈরি

> db.demo432.insertOne({ "_id": 101, "Name": "David", "Value1": 67, "Value2": 87, "Value3": 78 })
> db.demo432.insertOne({ "_id": 102, "Name": "Sam", "Value1": 98, "Value2": 45, "Value3": 90 })

সমস্ত ডকুমেন্ট দেখানো

> db.demo432.find()

আউটপুট:

{ "_id": 101, "Name": "David", "Value1": 67, "Value2": 87, "Value3": 78 }
{ "_id": 102, "Name": "Sam", "Value1": 98, "Value2": 45, "Value3": 90 }

কোয়েরি: প্রথম টেস্ট স্কোর গড়ের চেয়ে কম হলে

> db.demo432.aggregate([
    { $project: {
        Name: "$Name",
        Value1: "$Value1",
        average: { $avg: ["$Value1", "$Value2", "$Value3"] }
    }},
    { $group: {
        _id: null,
        NameValue1: { $push: { "Name": "$Name", "Value1": "$Value1" } },
        totalAverage: { $avg: "$average" }
    }},
    { $project: {
        lessthanAverageNames: {
            $map: {
                input: { 
                    $filter: { 
                        input: "$NameValue1", 
                        as: "out", 
                        cond: { $lt: ["$$out.Value1", "$totalAverage"] } 
                    } 
                },
                as: "o",
                in: "$$o.Name"
            }
        }
    }}
])

ফলাফল:

{ "_id": null, "lessthanAverageNames": ["David"] }

ব্যাখ্যা

  1. $project (প্রথমটি): প্রতিটি ডকুমেন্টের তিনটি ভ্যালুর গড় (average) বের করে
  2. $group: সব ডকুমেন্ট একসাথে গ্রুপ করে সবার গড় (totalAverage) এবং নাম-ভ্যালু পেয়ার সংরক্ষণ করে
  3. $project (দ্বিতীয়টি): $filter দিয়ে যাদের Value1 মোট গড়ের চেয়ে কম তাদের ছান্নি করে, তারপর $map দিয়ে শুধু নামগুলো রিটার্ন করে

দাবিড়ের Value1 (67) তিনটি টেস্টের মোট গড়ের চেয়ে কম, তাই শুধু তার নাম ফলাফলে আসে।

  1. MySQL-এ বর্তমান তারিখ (NOW/CURDATE) থেকে ছোট তারিখের রেকর্ড বের করা

  2. C++-এ N থেকে ছোট সব সংখ্যা প্রিন্ট করা যাতে শুধু ২টি স্বতন্ত্র অঙ্ক থাকে

  3. A to Z মাইক্রোসফট অফিস বান্ডেল: $৩০-এর কম খরচে সব শিখুন

  4. রেইলসে থ্রি-ফেজ প্যাটার্ন দিয়ে টেস্ট লিখতে মাস্টার করুন