Zatímco .distinct() funguje dobře pouze pro získání odlišných hodnot pro pole, aby bylo možné skutečně získat počty výskytů, je to vhodnější pro agregační rámec:
Collection.aggregate([
{ "$group": {
"_id": "$field",
"count": { "$sum": 1 }
}}
],function(err,result) {
});
Také .distinct() metoda "abstraktuje" od místa, kde je zadané "odlišné" pole ve skutečnosti v poli. V tomto případě musíte zavolat $unwind nejprve zpracujte prvky pole zde:
Collection.aggregate([
{ "$unwind": "$array" },
{ "$group": {
"_id": "$array.field",
"count": { "$sum": 1 }
}}
],function(err,result) {
});
Hlavní práce se tedy v zásadě provádí ve skupině $group "seskupením" na hodnotách pole, což znamená totéž jako "odlišné". $sum je seskupovací operátor, který v tomto případě sčítá pouze 1 pro každý výskyt této hodnoty v poli pro danou kolekci.