Tandis que .distinct()
fonctionne bien pour obtenir simplement les valeurs distinctes d'un champ, afin d'obtenir réellement le nombre d'occurrences, ceci est mieux adapté au cadre d'agrégation :
Collection.aggregate([
{ "$group": {
"_id": "$field",
"count": { "$sum": 1 }
}}
],function(err,result) {
});
Aussi le .distinct()
La méthode "abstrait" de l'endroit où le champ "distinct" spécifié se trouve réellement dans un tableau. Dans ce cas, vous devez appeler $unwind
premier à traiter les éléments du tableau ici :
Collection.aggregate([
{ "$unwind": "$array" },
{ "$group": {
"_id": "$array.field",
"count": { "$sum": 1 }
}}
],function(err,result) {
});
Ainsi, le travail principal est essentiellement effectué dans le $group
en "regroupant" sur les valeurs du champ, ce qui revient au même que "distinct". La $sum
est un opérateur de regroupement qui, dans ce cas, additionne simplement 1
pour chaque occurrence de cette valeur dans le champ de cette collection.