বিভিন্ন ডকুমেন্টে পুনরাবৃত্ত মানের কাউন্ট
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, রিকমেন্ডেশন, ডেটা কোয়ালিটি চেক ইত্যাদিতে খুব কাজে লাগে।