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

Lấy giá trị lớn nhất (max) cho các phần tử distinct trong MongoDB

Sử dụng $sort giảm dần rồi $group lấy $first

Sắp xếp theo giá trị giảm dần, sau đó nhóm theo key và lấy bản ghi đầu tiên (giá trị lớn nhất) của mỗi nhóm.

Dữ liệu mẫu

> db.demo750.insertMany([
  { id: 101, value: 50 },
  { id: 102, value: 40 },
  { id: 101, value: 110 }
]);

Truy vấn

db.demo750.aggregate([
  { $sort: { value: -1 } },
  { $group: { _id: "$id", value: { $first: "$value" } } },
  { $project: { id: "$_id", value: 1 } }
]);

Kết quả

{ "_id": 102, "value": 40, "id": 102 }
{ "_id": 101, "value": 110, "id": 101 }

Mỗi id duy nhất kèm theo giá trị value lớn nhất.