MongoDB एग्रीगेशन से ऐरे एलिमेंट्स की फ्रीक्वेंसी गिनना
MongoDB में ऐरे एलिमेंट्स की फ्रीक्वेंसी गिनकर टॉप N एलिमेंट्स प्राप्त करने के लिए एग्रीगेशन पाइपलाइन का उपयोग करें।
उदाहरण: कलेक्शन और डॉक्यूमेंट्स बनाना
> db.topCountArrayDemo.insertOne(
... {"StudentId":101 , "StudentSubject": ["C", "MongoDB"]}
... );
{ "acknowledged" : true, "insertedId" : ObjectId("5cc6b3209cb58ca2b005e669") }
> db.topCountArrayDemo.insertOne(
... {"StudentId":102 , "StudentSubject": ["C", "Java"]}
... );
{ "acknowledged" : true, "insertedId" : ObjectId("5cc6b3219cb58ca2b005e66a") }
> db.topCountArrayDemo.insertOne(
... {"StudentId":103 , "StudentSubject": ["C", "MongoDB"]}
... );
{ "acknowledged" : true, "insertedId" : ObjectId("5cc6b3229cb58ca2b005e66b") }
सभी डॉक्यूमेंट्स देखना
> db.topCountArrayDemo.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5cc6b3209cb58ca2b005e669"), "StudentId" : 101, "StudentSubject" : [ "C", "MongoDB" ] }
{ "_id" : ObjectId("5cc6b3219cb58ca2b005e66a"), "StudentId" : 102, "StudentSubject" : [ "C", "Java" ] }
{ "_id" : ObjectId("5cc6b3229cb58ca2b005e66b"), "StudentId" : 103, "StudentSubject" : [ "C", "MongoDB" ] }
टॉप 2 सबसे कॉमन सब्जेक्ट्स खोजना
> db.topCountArrayDemo.aggregate(
... [
... { $unwind: "$StudentSubject" },
... { $group: { _id: "$StudentSubject", Frequency: {$sum: 1} } },
... { $sort: {Frequency:-1} },
... { $limit: 2 }
... ]
... ).pretty();
आउटपुट:
{ "_id" : "C", "Frequency" : 3 }
{ "_id" : "MongoDB", "Frequency" : 2 }
पाइपलाइन स्टेप्स समझ:
$unwind- ऐरे को डी-कंस्ट्रक्ट करता है, प्रत्येक एलिमेंट के लिए अलग डॉक्यूमेंट बनाता है$group- सब्जेक्ट द्वारा ग्रुप करता है और फ्रीक्वेंसी गिनता है$sort- फ्रीक्वेंसी के अनुसार डिसेंडिंग क्रम में सॉर्ट करता है$limit- टॉप 2 परिणाम लौटाता है