इसके लिए, $avg के साथ $group और समुच्चय() का उपयोग करें। आइए दस्तावेजों के साथ एक संग्रह बनाएं -
> 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") }
संग्रह से सभी दस्तावेज़ों को खोजने () विधि की सहायता से प्रदर्शित करें -
> 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 } ] }