Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में ऐरे में रेटिंग्स का औसत कैसे निकालें और फील्ड को मूल डॉक्यूमेंट में शामिल करें?

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 के साथ डॉक्यूमेंट्स अपडेट करें।
  1. MongoDB क्वेरी: आईडी को सरणी फ़ील्ड मान से बाहर कैसे करें MongoDB क्वेरी: आईडी को सरणी फ़ील्ड मान से बाहर कैसे करें

    इसके लिए $not के साथ $in ऑपरेटर का उपयोग करें। आइए एक संग्रह बनाते हैं: [ { id: 101, subjectid: [ 102 ] }, { id: 102, subjectid: [ 102 ] } ] सभी दस्तावेज़ देखने के लिए: db.collection.find() आउटपुट: [ { _id: ObjectId(5a934e000102030405000000),

  1. - MongoDB में ऐरे आइटम्स की गिनती करके नए फील्ड में प्रदर्शित करें

    दस्तावेज में ऐरे आइटम्स की संख्या गिनने के लिए, MongoDB में $size का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo703.insertOne({ListOfSubject:[MySQL,MongoDB]}); { acknowledged : true, insertedId : ObjectId(5ea6ebaf551299a9f98c93b4) } > db.demo703.insertOne({ListOfSubject:

  1. - MongoDB एग्रीगेशन: दस्तावेज और ऐरे एलिमेंट्स से औसत प्राप्त करें

    इसके लिए, $avg के साथ $group और aggregate() का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo598.insertOne({ Information:Student, id:100, details:[ {Name:Chris,Marks:75}, {Name:Bob,Marks:55} ] }); { acknowledged : true, insertedId : ObjectId(5e9