Toán tử $addToSet đảm bảo không thêm phần tử trùng lặp vào mảng. Tạo collection:
> db.getDistinctDemo.insertOne({ "Values": [100, 200] });
{ "acknowledged": true, "insertedId": ObjectId("5cef69f9ef71edecf6a1f69d") }
> db.getDistinctDemo.insertOne({ "Values": [300, 100] });
{ "acknowledged": true, "insertedId": ObjectId("5cef6a07ef71edecf6a1f69e") }
Hiển thị document:
> db.getDistinctDemo.find().pretty();
Kết quả:
{
"_id": ObjectId("5cef69f9ef71edecf6a1f69d"),
"Values": [ 100, 200 ]
}
{
"_id": ObjectId("5cef6a07ef71edecf6a1f69e"),
"Values": [ 300, 100 ]
}
Truy vấn aggregate dùng $addToSet để gom các giá trị duy nhất từ mảng Values:
> db.getDistinctDemo.aggregate([
{ "$group": { "_id": 0, "MyValues": { "$addToSet": "$Values" } } }
]);
Kết quả (các mảng con được giữ nguyên, không gộp phẳng):
{ "_id": 0, "MyValues": [ [ 300, 100 ], [ 100, 200 ] ] }