Sử dụng $group với _id là đối tượng chứa nhiều trường. Tạo collection:
> db.demo192.insertOne({ "Name": "Chris", "Age": 22 });
{ "acknowledged": true, "insertedId": ObjectId("5e3adb9f03d395bdc21346cd") }
> db.demo192.insertOne({ "Name": "David", "Age": 21 });
{ "acknowledged": true, "insertedId": ObjectId("5e3adba103d395bdc21346ce") }
> db.demo192.insertOne({ "Name": "Chris", "Age": 22 });
{ "acknowledged": true, "insertedId": ObjectId("5e3adba503d395bdc21346cf") }
> db.demo192.insertOne({ "Name": "Mike", "Age": 24 });
{ "acknowledged": true, "insertedId": ObjectId("5e3adbbf03d395bdc21346d0") }
Hiển thị document (có bản trùng Name+Age).
Pipeline aggregate nhóm theo cặp (Age, Name):
> db.demo192.aggregate([{ $group: { _id: { Age: "$Age", Name: "$Name" } } }]);
Kết quả (3 nhóm duy nhất):
{ "_id": { "Age": 24, "Name": "Mike" } }
{ "_id": { "Age": 21, "Name": "David" } }
{ "_id": { "Age": 22, "Name": "Chris" } }