MongoDB एग्रीगेशन में $group और $sum का उपयोग करके घटनाएं गिनना
SQL के COUNT(*) और GROUP BY के समकक्ष, MongoDB एग्रीगेशन में $group के साथ $sum: 1 का उपयोग करके दस्तावेज़ों को ग्रुप करके गिनती करें, फिर शीर्ष परिणामों के लिए सॉर्ट और लिमिट करें।
सैंपल डेटा बनाना
> db.demo264.insertOne({"Name":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e47ed441627c0c63e7dba9e") }
> db.demo264.insertOne({"Name":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e47ed471627c0c63e7dba9f") }
> db.demo264.insertOne({"Name":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e47ed491627c0c63e7dbaa0") }
> db.demo264.insertOne({"Name":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e47ed4c1627c0c63e7dbaa1") }
> db.demo264.insertOne({"Name":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e47ed4e1627c0c63e7dbaa2") }
> db.demo264.insertOne({"Name":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e47ed531627c0c63e7dbaa3") }
दस्तावेज़ देखना
> db.demo264.find();
आउटपुट:
एग्रीगेशन: नाम द्वारा ग्रुप, गिनती, सॉर्ट, टॉप 5
> db.demo264.aggregate([ { $group: { _id: "$Name", count: { $sum: 1 } } }, { $sort: { count: -1 } }, { $limit: 5 } ]);आउटपुट:
चरण-दर-चरण
$group:_id: "$Name"- Name फ़ील्ड द्वारा ग्रुप,count: { $sum: 1 }- प्रत्येक ग्रुप के लिए गिनती$sort:count: -1- गिनती द्वारा डिसेंडिंग सॉर्ट$limit:5- शीर्ष 5 परिणामSQL तुलना
> db.demo264.aggregate([ { $group: { _id: "$Name", count: { $sum: 1 } } }, { $group: { _id: null, total: { $sum: "$count" }, users: { $push: { name: "$_id", count: "$count" } } } }, { $unwind: "$users" }, { $project: { name: "$users.name", count: "$users.count", percentage: { $multiply: [ { $divide: [ "$users.count", "$total" ] }, 100 ] } } }, { $sort: { count: -1 } }, { $limit: 5 } ]);इंडेक्स अनुकूलन