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

Lấy giá trị Min/Max trong MongoDB Aggregate ($min, $max)

Sử dụng $min và $max trong giai đoạn $group của aggregation pipeline để tìm giá trị nhỏ nhất và lớn nhất của một trường trên toàn collection hoặc theo nhóm.

Dữ liệu mẫu (có trùng lặp)

> db.demo167.insertOne({"Score":60});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3693a79e4f06af551997d1") }
> db.demo167.insertOne({"Score":80});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3693ab9e4f06af551997d2") }
> db.demo167.insertOne({"Score":60});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3693ad9e4f06af551997d3") }
> db.demo167.insertOne({"Score":90});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3693b09e4f06af551997d4") }
> db.demo167.insertOne({"Score":89});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3693b69e4f06af551997d5") }

Xem dữ liệu

> db.demo167.find();
{ "_id" : ObjectId("5e3693a79e4f06af551997d1"), "Score" : 60 }
{ "_id" : ObjectId("5e3693ab9e4f06af551997d2"), "Score" : 80 }
{ "_id" : ObjectId("5e3693ad9e4f06af551997d3"), "Score" : 60 }
{ "_id" : ObjectId("5e3693b09e4f06af551997d4"), "Score" : 90 }
{ "_id" : ObjectId("5e3693b69e4f06af551997d5"), "Score" : 89 }

Aggregate tính Min/Max

> var d = [ { "$group": { "_id": "id", "MinimumValue": { "$min": "$Score" }, "MaximumValue": { "$max": "$Score" } } } ];
> db.demo167.aggregate(d);

Kết quả

{ "_id" : "id", "MinimumValue" : 60, "MaximumValue" : 90 }

Mở rộng: Thay "_id": "id" bằng "_id": "$Category" để tính Min/Max theo từng nhóm. Các accumulator khác: $sum, $avg, $first, $last, $push, $addToSet. Kết hợp với $match để lọc trước khi nhóm.