MongoDB एग्रीगेशन में ऐरे एलिमेंट्स की घटनाएं गिनना
किसी ऐरे में विशिष्ट मान की घटनाओं को गिनने और अधिकतम घटनाओं वाले दस्तावेज़ को खोजने के लिए $filter, $size, $group, $sort, और $limit का संयोजन उपयोग करें।
सैंपल डेटा बनाना
> db.countOccurrencesDemo.insertOne({"ListOfValues":[65,87,89,65,67,87,87,87]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e06ef9325ddae1f53b621eb") }
> db.countOccurrencesDemo.insertOne({"ListOfValues":[102,65,87,65,89,65,89,65,89,65]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e06efaa25ddae1f53b621ec") }
दस्तावेज़ देखना
> db.countOccurrencesDemo.find();
आउटपुट:
एग्रीगेशन: मान 65 की घटनाएं गिनें और अधिकतम वाला दस्तावेज़ खोजें
> db.countOccurrencesDemo.aggregate([ { "$project": { "ListOfValues": 1, "OccurencesValue": { "$size": { "$filter": { "input": "$ListOfValues", "as": "v", "cond": { "$eq": [ "$$v", 65 ] } } } } }}, { "$group": { "_id": "$OccurencesValue", "MyValues": { "$push": "$$ROOT" } }}, { "$sort": { "_id": -1 } }, { "$limit": 1 } ]);आउटपुट:
चरण-दर-चरण स्पष्टीकरण
$project: प्रत्येक दस्तावेज़ के लिए 65 की गिनती गणना करता है ($filter+$size)$group: गिनती द्वारा ग्रुप करता है, पूरे दस्तावेज़ को$$ROOTके साथ पुश करता है$sort: गिनती (_id) द्वारा डिसेंडिंग सॉर्ट करता है$limit: 1: केवल शीर्ष ग्रुप (अधिकतम गिनती) लौटाता हैसरल विकल्प: केवल गिनती और दस्तावेज़
सामान्यीकृत संस्करण (किसी भी मान के लिए)
यह प्रत्येक दस्तावेज़ में प्रत्येक मान की गिनती देता है, फिर समग्र अधिकतम खोजता है।