MongoDB-এ গড় (average) মান বের করতে অ্যাগ্রিগেশন পাইপলাইনে $avg অপারেটর ব্যবহার করা হয়। নিচে নেস্টেড ফিল্ডের গড় বের করার উদাহরণ দেওয়া হলো।
কলেকশন এবং ডকুমেন্ট তৈরি
> db.demo80.insertOne({"Details":{"Price":10.5}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2bf43271bf0181ecc42297") }
> db.demo80.insertOne({"Details":{"Price":50.3}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2bf43871bf0181ecc42298") }
> db.demo80.insertOne({"Details":{"Price":100.10}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2bf43f71bf0181ecc42299") }
সব ডকুমেন্ট দেখানো
> db.demo80.find();
আউটপুট:
{ "_id" : ObjectId("5e2bf43271bf0181ecc42297"), "Details" : { "Price" : 10.5 } }
{ "_id" : ObjectId("5e2bf43871bf0181ecc42298"), "Details" : { "Price" : 50.3 } }
{ "_id" : ObjectId("5e2bf43f71bf0181ecc42299"), "Details" : { "Price" : 100.1 } }
গড় মান বের করার কোয়ারী
$group স্টেজে _id: null দিয়ে সব ডকুমেন্ট একসাথে গ্রুপ করা হয়েছে এবং ডট নোটেশন $Details.Price দিয়ে নেস্টেড ফিল্ড অ্যাক্সেস করা হয়েছে:
> db.demo80.aggregate([
... {
... "$group": {
... "_id": null,
... "AvgValue": {
... "$avg": "$Details.Price"
... }
... }
... }
... ]);
ফলাফল
{ "_id" : null, "AvgValue" : 53.633333333333326 }
গণনা: (১০.৫ + ৫০.৩ + ১০০.১) / ৩ = ৫৩.৬৩৩৩...
বিকল্প পদ্ধতি: যদি আপনি প্রতিটি ডকুমেন্টের জন্য গড় চান (যেমন অ্যারেতে), তবে $project স্টেজে $avg ব্যবহার করুন।
নোট: $avg শুধু সংখ্যাসূচক মান গুনে, নন-নিউমেরিক মান অগ্রাহ্য করে।