Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Tính giá trị trung bình mỗi tài liệu và sắp xếp trong MongoDB

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: $addFields thêm trường mới không làm mất trường cũ. $avg tính trung bình các phần tử trong mảng. $sort: 1 tăng dần, -1 giảm dần.