Sử dụng $group với $addToSet trong aggregation framework. Tạo collection:
> db.distinctOnMultipleFieldsDemo.insertOne({"StudentFirstName": "Chris", "StudentAge": 21, "StudentCountryName": "US"});
{ "acknowledged": true, "insertedId": ObjectId("5cd2e518b64f4b851c3a13d7") }
> db.distinctOnMultipleFieldsDemo.insertOne({"StudentFirstName": "Robert", "StudentAge": 21, "StudentCountryName": "AUS"});
{ "acknowledged": true, "insertedId": ObjectId("5cd2e518b64f4b851c3a13d8") }
> db.distinctOnMultipleFieldsDemo.insertOne({"StudentFirstName": "Chris", "StudentAge": 22, "StudentCountryName": "UK"});
{ "acknowledged": true, "insertedId": ObjectId("5cd2e518b64f4b851c3a13d9") }
> db.distinctOnMultipleFieldsDemo.insertOne({"StudentFirstName": "David", "StudentAge": 24, "StudentCountryName": "AUS"});
{ "acknowledged": true, "insertedId": ObjectId("5cd2e518b64f4b851c3a13da") }
Hiển thị tất cả
> db.distinctOnMultipleFieldsDemo.find().pretty();
Aggregation distinct nhiều trường
> db.distinctOnMultipleFieldsDemo.aggregate([
{
$group: {
_id: 0,
StudentFirstName: { $addToSet: '$StudentFirstName' },
StudentAge: { $addToSet: '$StudentAge' },
StudentCountryName: { $addToSet: '$StudentCountryName' }
}
}
]);
Kết quả:
{
"_id": 0,
"StudentFirstName": ["David", "Robert", "Chris"],
"StudentAge": [24, 22, 21],
"StudentCountryName": ["UK", "AUS", "US"]
}
Giải thích: $addToSet chỉ thêm giá trị chưa có trong mảng kết quả. _id: 0 gom nhóm tất cả tài liệu thành một nhóm duy nhất.