MongoDB एग्रीगेशन में _id: null के साथ सभी डॉक्यूमेंट्स में औसत गणना करना
_id: null के साथ $group स्टेज का उपयोग करके सभी डॉक्यूमेंट्स को एक ही समूह में समूहित करें, फिर $avg के साथ औसत की गणना करें।
सिंटैक्स
db.yourCollectionName.aggregate([
{ $group: { _id: null, "anyFieldName": { $avg: "$yourFieldName" } } }
]);
नमूना डेटा बनाना
> db.caculateTheAverageValueDemo.insertOne({"Population":100});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd68a197924bb85b3f4895f") }
> db.caculateTheAverageValueDemo.insertOne({"Population":500});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd68a1c7924bb85b3f48960") }
> db.caculateTheAverageValueDemo.insertOne({"Population":200});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd68a237924bb85b3f48961") }
> db.caculateTheAverageValueDemo.insertOne({"Population":100});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd68a297924bb85b3f48962") }
> db.caculateTheAverageValueDemo.insertOne({"Population":100});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd68a2e7924bb85b3f48963") }
सभी डॉक्यूमेंट्स देखना
> db.caculateTheAverageValueDemo.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5cd68a197924bb85b3f4895f"), "Population" : 100 }
{ "_id" : ObjectId("5cd68a1c7924bb85b3f48960"), "Population" : 500 }
{ "_id" : ObjectId("5cd68a237924bb85b3f48961"), "Population" : 200 }
{ "_id" : ObjectId("5cd68a297924bb85b3f48962"), "Population" : 100 }
{ "_id" : ObjectId("5cd68a2e7924bb85b3f48963"), "Population" : 100 }
औसत गणना करना
> db.caculateTheAverageValueDemo.aggregate([
{ $group: { _id: null, "AveragePopulation": { $avg: "$Population" } } }
]);
आउटपुट:
{ "_id" : null, "AveragePopulation" : 200 }
व्याख्या
_id: null- सभी डॉक्यूमेंट्स को एक ही बकेट में समूहित करता है।$avg: "$Population"- सभी डॉक्यूमेंट्स में Population फील्ड का औसत निकालता है: (100+500+200+100+100)/5 = 200।nullमानों को स्वचालित रूप से अनदेखा किया जाता है।
अतिरिक्त सांख्यिकी के साथ विस्तारित उदाहरण
db.collection.aggregate([
{ $group: {
_id: null,
avgVal: { $avg: "$field" },
minVal: { $min: "$field" },
maxVal: { $max: "$field" },
sumVal: { $sum: "$field" },
count: { $sum: 1 }
}}
]);
मुख्य बिंदु
_id: null"समग्र" एग्रीगेशन के लिए मानक पैटर्न है।$avgकेवल न्यूमेरिक मानों पर काम करता है; गैर-न्यूमेरिक मानों को अनदेखा करता है।- फ़िल्टर किए गए औसत के लिए,
$groupसे पहले$matchजोड़ें।