MongoDB एग्रीगेशन में $avg का उपयोग करके ऐरे फील्ड का औसत निकालना
$avg एग्रीगेशन ऑपरेटर एक ऐरे में न्यूमेरिक फील्ड के औसत की गणना करता है। $addFields के साथ संयुक्त, आप गणना किए गए औसत को एक नए फील्ड के रूप में मूल डॉक्यूमेंट में शामिल कर सकते हैं।
नमूना डेटा बनाना
> db.averageOfRatingsInArrayDemo.insertOne(
{
"StudentDetails":[
{ "StudentId":1, "StudentScore":45 },
{ "StudentId":2, "StudentScore":58 },
{ "StudentId":3, "StudentScore":67 }
]
}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cd427dc2cba06f46efe9ee4") }
डॉक्यूमेंट देखना
> db.averageOfRatingsInArrayDemo.find().pretty();
आउटपुट:
{
"_id" : ObjectId("5cd427dc2cba06f46efe9ee4"),
"StudentDetails" : [
{ "StudentId" : 1, "StudentScore" : 45 },
{ "StudentId" : 2, "StudentScore" : 58 },
{ "StudentId" : 3, "StudentScore" : 67 }
]
}
औसत निकालना और फील्ड जोड़ना
> db.averageOfRatingsInArrayDemo.aggregate([
{ $addFields : { StudentScoreAverage : { $avg : "$StudentDetails.StudentScore" } } }
]);
आउटपुट:
{
"_id" : ObjectId("5cd427dc2cba06f46efe9ee4"),
"StudentDetails" : [
{ "StudentId" : 1, "StudentScore" : 45 },
{ "StudentId" : 2, "StudentScore" : 58 },
{ "StudentId" : 3, "StudentScore" : 67 }
],
"StudentScoreAverage" : 56.666666666666664
}
व्याख्या
$addFields- मौजूदा फील्ड्स को संरक्षित करते हुए नए फील्ड्स जोड़ता है।$avg-StudentDetailsऐरे में सभीStudentScoreमानों का औसत निकालता है।"$StudentDetails.StudentScore"- पथ सिंटैक्स ऐरे में प्रत्येक ऑब्जेक्ट सेStudentScoreनिकालता है।
उपयोग के मामले
- छात्र ग्रेड्स, उत्पाद रेटिंग्स, या सेंसर रीडिंग्स के लिए औसत स्कोर की गणना करना।
- डाउनस्ट्रीम प्रोसेसिंग या रिपोर्टिंग के लिए गणना किए गए मेट्रिक्स के साथ डॉक्यूमेंट्स को समृद्ध करना।
$projectके साथ संयोजित करें यदि आप केवल विशिष्ट फील्ड्स + गणना किए गए औसत को आउटपुट करना चाहते हैं।
नोट: यह एग्रीगेशन पाइपलाइन एक कर्सर लौटाती है; यह मूल डॉक्यूमेंट्स को संशोधित नहीं करती है। परिणामों को स्थायी रूप से संग्रहीत करने के लिए,$mergeया$outस्टेज का उपयोग करें, या एप्लिकेशन कोड में परिणामों को पुनरावृत्त करें औरupdateOneके साथ डॉक्यूमेंट्स अपडेट करें।