MongoDB-এ প্রতিটি ডকুমেন্টের অ্যারে ফিল্ডের গড় (average) মান বের করে সর্ট করতে অ্যাগ্রিগেশন পাইপলাইনে $addFields (বা $project) দিয়ে $avg ক্যালকুলেট করা এবং $sort দিয়ে সর্ট করা হয়।
নমুনা কালেকশন তৈরি
> db.calculateAverage.insertOne({ 'Value': [10, 20, 80] });
{ "acknowledged": true, "insertedId": ObjectId("5e0383e3f5e889d7a51994dc") }
> db.calculateAverage.insertOne({ 'Value': [12, 15, 16] });
{ "acknowledged": true, "insertedId": ObjectId("5e0383edf5e889d7a51994dd") }
> db.calculateAverage.insertOne({ 'Value': [30, 35, 40] });
{ "acknowledged": true, "insertedId": ObjectId("5e0383f5f5e889d7a51994de") }
সমস্ত ডকুমেন্ট প্রদর্শন
> db.calculateAverage.find().pretty();
আউটপুট:
{ "_id": ObjectId("5e0383e3f5e889d7a51994dc"), "Value": [ 10, 20, 80 ] }
{ "_id": ObjectId("5e0383edf5e889d7a51994dd"), "Value": [ 12, 15, 16 ] }
{ "_id": ObjectId("5e0383f5f5e889d7a51994de"), "Value": [ 30, 35, 40 ] }
গড় মান ক্যালকুলেট এবং সর্ট করার কোয়েরি
> db.calculateAverage.aggregate([
{
$addFields: {
calavg: { $avg: "$Value" }
}
},
{
$sort: { calavg: 1 }
}
]);
ফলাফল
{ "_id": ObjectId("5e0383edf5e889d7a51994dd"), "Value": [ 12, 15, 16 ], "calavg": 14.333333333333334 }
{ "_id": ObjectId("5e0383f5f5e889d7a51994de"), "Value": [ 30, 35, 40 ], "calavg": 35 }
{ "_id": ObjectId("5e0383e3f5e889d7a51994dc"), "Value": [ 10, 20, 80 ], "calavg": 36.666666666666664 }
ব্যাখ্যা:
$addFields- নতুন ফিল্ডcalavgযোগ করে যেটিতে$avg: "$Value"দিয়ে অ্যারের গড় মান থাকে।$sort: { calavg: 1 }- গড় মানের অ্যাসেন্ডিং অর্ডারে সর্ট করে।- ডকুমেন্ট ২ (১২, ১৫, ১৬) - গড় ১৪.৩৩ (নিম্নতম)
- ডকুমেন্ট ৩ (৩০, ৩৫, ৪০) - গড় ৩৫
- ডকুমেন্ট ১ (১০, ২০, ৮০) - গড় ৩৬.৬৭ (সর্বোচ্চ)
বিকল্প: $project ব্যবহার
db.calculateAverage.aggregate([
{ $project: { Value: 1, calavg: { $avg: "$Value" } } },
{ $sort: { calavg: 1 } }
]);
$project শুধু নির্দিষ্ট ফিল্ড রাখে, $addFields বিদ্যমান ফিল্ডের পাশাপাশি নতুন ফিল্ড যোগ করে।