Mientras que .distinct()
funciona bien solo para obtener los valores distintos de un campo, para obtener realmente los recuentos de ocurrencias, esto se adapta mejor al marco de agregación:
Collection.aggregate([
{ "$group": {
"_id": "$field",
"count": { "$sum": 1 }
}}
],function(err,result) {
});
También el .distinct()
El método hace "resumen" desde donde el campo "distinto" especificado está realmente dentro de una matriz. En este caso, debe llamar a $unwind
primero en procesar los elementos de la matriz aquí:
Collection.aggregate([
{ "$unwind": "$array" },
{ "$group": {
"_id": "$array.field",
"count": { "$sum": 1 }
}}
],function(err,result) {
});
Entonces, el trabajo principal se realiza básicamente en el $group
por "agrupación" en los valores de campo, lo que significa lo mismo que "distinto". El $sum
es un operador de agrupación que en este caso solo suma 1
por cada aparición de ese valor en el campo de esa colección.