Sử dụng aggregation $addFields với $avg và $sort. Tạo collection:
>> 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") }
Hiển thị tài liệu:
> db.calculateAverage.find().pretty();
Aggregation tính trung bình mảng Value và sắp xếp tăng dần:
> db.calculateAverage.aggregate([ { "$addFields": { "calavg": { "$avg": "$Value" }}}, { "$sort": { "calavg": 1 }} ], function(err, out) { res.send(out) });Kết quả - có thêm trường calavg, sắp xếp từ thấp đến cao:
Giải thích:
$addFieldsthêm trường mới không làm mất trường cũ.$avgtính trung bình các phần tử trong mảng.$sort: 1tăng dần,-1giảm dần.