इसके लिए, $avg के साथ $group और aggregate() का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं:
> db.demo598.insertOne({
Information:'Student',
id:100,
details:[
{Name:'Chris',Marks:75},
{Name:'Bob',Marks:55}
]
}); { "acknowledged" : true, "insertedId" : ObjectId("5e947fccf5f1e70e134e2694") }
> db.demo598.insertOne({
Information:'Student',
id:101,
details:[
{Name:'Chris',Marks:75},
{Name:'Bob',Marks:45}
]
}); { "acknowledged" : true, "insertedId" : ObjectId("5e947fcdf5f1e70e134e2695") }
find() मेथड की मदद से कलेक्शन के सभी दस्तावेज प्रदर्शित करें:
> db.demo598.find();
यह निम्न आउटपुट देगा:
{ "_id" : ObjectId("5e947fccf5f1e70e134e2694"), "Information" : "Student", "id" : 100, "details" : [ { "Name" : "Chris", "Marks" : 75 }, { "Name" : "Bob", "Marks" : 55 } ] }
{ "_id" : ObjectId("5e947fcdf5f1e70e134e2695"), "Information" : "Student", "id" : 101, "details" : [ { "Name" : "Chris", "Marks" : 75 }, { "Name" : "Bob", "Marks" : 45 } ] }
दस्तावेज और ऐरे एलिमेंट्स से औसत प्राप्त करने के लिए क्वेरी:
> db.demo598.aggregate([
{ "$group": {
"_id": "Information",
"id": { "$avg": "$id" },
"details": { "$push": "$details" }
}},
{ "$unwind": "$details" },
{ "$unwind": "$details" },
{ "$group": {
"_id": { "Information": "$_id", "Name": "$details.Name" },
"id": { "$avg": "$id" },
"AvgValue": { "$avg": "$details.Marks" }
}},
{ "$sort": { "_id": 1 } },
{ "$group": {
"_id": "$_id.Information",
"id": { "$avg": "$id" },
"details": { "$push": { "Name": "$_id.Name", "MarksAvg": "$AvgValue" } }
}}
]).pretty();
यह निम्न आउटपुट देगा:
{ "_id" : "Information", "id" : 100.5, "details" : [ { "Name" : "Bob", "MarksAvg" : 50 }, { "Name" : "Chris", "MarksAvg" : 75 } ] }