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

Thực hiện distinct với nhiều khóa trong MongoDB

Sử dụng $group trong Aggregation Framework để distinct trên nhiều trường (compound distinct).

Ví dụ minh họa

Tạo collection distinctWithMultipleKeysDemo:

> db.distinctWithMultipleKeysDemo.insertOne({"TenSinhVien": "Mike", "TuoiSinhVien": 22, "DiemToan": 56});
> db.distinctWithMultipleKeysDemo.insertOne({"TenSinhVien": "Mike", "TuoiSinhVien": 22, "DiemToan": 56});
> db.distinctWithMultipleKeysDemo.insertOne({"TenSinhVien": "Bob", "TuoiSinhVien": 23, "DiemToan": 45});
> db.distinctWithMultipleKeysDemo.insertOne({"TenSinhVien": "Bob", "TuoiSinhVien": 23, "DiemToan": 45});
> db.distinctWithMultipleKeysDemo.insertOne({"TenSinhVien": "Carol", "TuoiSinhVien": 27, "DiemToan": 54});

Dữ liệu: 3 cặp giá trị duy nhất (Mike/22, Bob/23, Carol/27) - mỗi cặp trùng 2 lần.

Truy vấn distinct trên TenSinhVien + TuoiSinhVien

> db.distinctWithMultipleKeysDemo.aggregate([
  {$group: {_id: {TenSinhVien: "$TenSinhVien", TuoiSinhVien: "$TuoiSinhVien"}}}
]);

Kết quả:

{ "_id": {"TenSinhVien": "Carol", "TuoiSinhVien": 27} }
{ "_id": {"TenSinhVien": "Bob", "TuoiSinhVien": 23} }
{ "_id": {"TenSinhVien": "Mike", "TuoiSinhVien": 22} }

Mở rộng: Thêm $project để format output, $sort để sắp xếp, $count để đếm tổng.

Lưu ý: MongoDB không hỗ trợ distinct() trực tiếp trên nhiều trường. Aggregation là cách chuẩn.