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.