sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB cuenta valor distinto?

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.