Докато .distinct()
работи добре само за получаване на отделните стойности за поле, за да получите действително броя на събитията, това е по-подходящо за рамката за агрегиране:
Collection.aggregate([
{ "$group": {
"_id": "$field",
"count": { "$sum": 1 }
}}
],function(err,result) {
});
Също така .distinct()
методът прави „абстракция“ от мястото, където определеното „отличително“ поле всъщност е в масив. В този случай трябва да извикате $unwind
първо да обработи елементите на масива тук:
Collection.aggregate([
{ "$unwind": "$array" },
{ "$group": {
"_id": "$array.field",
"count": { "$sum": 1 }
}}
],function(err,result) {
});
Така че основната работа се извършва основно в $group
чрез "групиране" на стойностите на полето, което означава същото нещо като "различен". $sum
е оператор за групиране, който в този случай просто събира 1
за всяко поява на тази стойност в полето за тази колекция.