MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB compte une valeur distincte ?

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.