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

MongoDB-এ পুনরাবৃত্ত মানের গণনা অ্যাগ্রিগেশন দিয়ে


বিভিন্ন ডকুমেন্টে পুনরাবৃত্ত মানের কাউন্ট

MongoDB-এ একই ফিল্ডের মান বিভিন্ন ডকুমেন্টে কতবার আসেছে তা গড়ে বের করতে অ্যাগ্রিগেশন পাইপলাইনে $group এবং $sum ব্যবহার করা হয়।

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

> db.demo452.insertOne({ "StudentName": "John", "StudentAge": 21 })
> db.demo452.insertOne({ "StudentName": "John", "StudentAge": 22 })
> db.demo452.insertOne({ "StudentName": "John", "StudentAge": 23 })
> db.demo452.insertOne({ "StudentName": "David", "StudentAge": 24 })
> db.demo452.insertOne({ "StudentName": "David", "StudentAge": 25 })

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

> db.demo452.find()

আউটপুট:

{ "_id": ObjectId("..."), "StudentName": "John", "StudentAge": 21 }
{ "_id": ObjectId("..."), "StudentName": "John", "StudentAge": 22 }
{ "_id": ObjectId("..."), "StudentName": "John", "StudentAge": 23 }
{ "_id": ObjectId("..."), "StudentName": "David", "StudentAge": 24 }
{ "_id": ObjectId("..."), "StudentName": "David", "StudentAge": 25 }

পুনরাবৃত্ত মান কাউন্ট করার কোয়েরি (সরলীকৃত)

> db.demo452.aggregate([
    { $group: { _id: "$StudentName", count: { $sum: 1 } } },
    { $sort: { count: -1 } }
])

ফলাফল:

{ "_id": "John", "count": 3 }
{ "_id": "David", "count": 2 }

মূল আর্টিকেলের জটিল কোয়েরি (টপ-২ + অথার্স গ্রুপ)

মূল আর্টিকেলে টপ-২ নাম আলাদা এবং বাকিগুলো "New Student Name" আওতায় গ্রুপ করা হয়েছে। এটি রিপোর্টিংয়ের জন্য উপযোগী কিন্তু জটিল। সাধারণ ব্যবহারে উপরের সরল কোয়েরি যথেষ্ট।

ব্যাখ্যা

  • $group _id: "$StudentName": নাম অনুযায়ী গ্রুপ করে
  • $sum: 1: প্রতিটি ডকুমেন্টের জন্য ১ যোগ করে (কাউন্ট)
  • $sort: { count: -1 }: সর্বোচ্চ কাউন্ট প্রথমে দেখানোর জন্য

এই প্যাটার্ন লগ অ্যানালisis, রিকমেন্ডেশন, ডেটা কোয়ালিটি চেক ইত্যাদিতে খুব কাজে লাগে।

  1. MySQL কোয়েরি: ডISTINCT ভ্যালুর আওতা গণনা করে নতুন কলামে প্রদর্শন করা

  2. MySQL-এ শর্তভিত্তিক গণনা (Conditional Count) করে আলাদা কলামে দেখানো

  3. MySQL-এ একাধিক সারি গুনুন এবং ফলাফল আলাদা কলামে (একক সারি) দেখান

  4. N কে ১, ৩ এবং ৪ এর যোগফল হিসেবে প্রকাশ করার পদ্ধতির সংখ্যা (C++)