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

MongoDB-এ ঘন্টার অনুসারে সমষ্টি (Aggregate) এবং $avg ব্যবহার

MongoDB-এ ডেটা সমষ্টি (aggregation) করার জন্য aggregate() মেথডটি ব্যবহার করা হয়। এটি একটি কালেকশনের ডেটার ওপর গাণিতিক হিসাব নিকাশ করে সমষ্টি মান প্রদান করে।

উদাহরণ: কালেকশন তৈরি এবং ডেটা ইনসার্ট

প্রথমে demo544 নামক একটি কালেকশন তৈরি করে কিছু নমুনা ডকুমেন্ট ইনসার্ট করা যাক:

> db.demo544.insertOne({"DueTime":new ISODate("2020-01-10 12:10:20"),Amount:100});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8e1f029e5f92834d7f05ce") }
> db.demo544.insertOne({"DueTime":new ISODate("2020-01-12 12:00:00"),Amount:500});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8e1f089e5f92834d7f05cf") }
> db.demo544.insertOne({"DueTime":new ISODate("2020-01-12 12:10:20"),Amount:900});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8e1f109e5f92834d7f05d0") }

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

find() মেথড ব্যবহার করে কালেকশনের সব ডকুমেন্ট দেখানো যাক:

> db.demo544.find();

আউটপুট:

{ "_id" : ObjectId("5e8e1f029e5f92834d7f05ce"), "DueTime" : ISODate("2020-01-10T12:10:20Z"), "Amount" : 100 }
{ "_id" : ObjectId("5e8e1f089e5f92834d7f05cf"), "DueTime" : ISODate("2020-01-12T12:00:00Z"), "Amount" : 500 }
{ "_id" : ObjectId("5e8e1f109e5f92834d7f05d0"), "DueTime" : ISODate("2020-01-12T12:10:20Z"), "Amount" : 900 }

ঘন্টার ভিত্তিতে গ্রুপ করে গড় (Average) বের করা

নিচের কোয়েরি ব্যবহার করে DueTime ফিল্ড থেকে ঘন্টা বের করে গ্রুপ করা এবং Amount ফিল্ডের গড় মান বের করা হয়েছে:

> db.demo544.aggregate( { "$group": { "_id": { "$hour": "$DueTime" }, "Amount": { "$avg": "$Amount" } } } )

নোট: অরিজিনাল কোডে $dueTime (ছোট হাতের d) লেখা ছিল, কিন্তু ফিল্ডের নাম DueTime (বড় হাতের D)। MongoDB কেস-সংবেদনশীল (case-sensitive), তাই সঠিক ফিল্ড নাম ব্যবহার করা জরুরি।

এই কোয়েরির আউটপুট:

{ "_id" : 12, "Amount" : 500 }

এখানে _id: 12 মানে ১২টা ঘন্টা (দুপুর ১২টা), এবং Amount: 500 মানে এই ঘন্টার তিনটি ডকুমেন্টের গড় মান ৫০০।

মূল পয়েন্টসমূহ

  • $group স্টেজ ডকুমেন্টগুলো গ্রুপ করতে ব্যবহৃত হয়।
  • $hour অপারেটর একটি ডেট অবজেক্ট থেকে ঘন্টা (০-২৩) বের করে।
  • $avg অপারেটর গড় মান গণনা করে।
  • ফিল্ডের নাম লিখতে সময় কেস (uppercase/lowercase) ঠিক রাখতে হবে।
  1. MongoDB Aggregation-এ $match এবং $project বাস্তবায়ন

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

  3. Python এবং MongoDB (PyMongo) ব্যবহার গাইড

  4. MongoDB এগ্রিগেশন ও প্রজেকশন: $project স্টেজ ব্যবহার