Trong khi .distinct()
hoạt động tốt khi chỉ lấy các giá trị riêng biệt cho một trường, để thực sự nhận được số lần xuất hiện, điều này phù hợp hơn với khung tổng hợp:
Collection.aggregate([
{ "$group": {
"_id": "$field",
"count": { "$sum": 1 }
}}
],function(err,result) {
});
Cũng là .distinct()
phương thức thực hiện "trừu tượng" từ nơi trường "khác biệt" được chỉ định thực sự nằm trong một mảng. Trong trường hợp này, bạn cần gọi $unwind
đầu tiên để xử lý các phần tử mảng tại đây:
Collection.aggregate([
{ "$unwind": "$array" },
{ "$group": {
"_id": "$array.field",
"count": { "$sum": 1 }
}}
],function(err,result) {
});
Vì vậy, công việc chính được thực hiện về cơ bản trong nhóm $group
bằng cách "nhóm" trên các giá trị trường, có nghĩa giống như "khác biệt". $sum
là một toán tử nhóm mà trong trường hợp này chỉ thêm 1
cho mỗi lần xuất hiện của giá trị đó trong trường cho bộ sưu tập đó.