MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Valor distinto da contagem do MongoDB?


Enquanto .distinct() funciona bem apenas para obter os valores distintos para um campo, para realmente obter as contagens de ocorrências, isso é mais adequado para a estrutura de agregação:
Collection.aggregate([
    { "$group": {
        "_id": "$field",
        "count": { "$sum": 1 }
    }}
],function(err,result) {

});

Também o .distinct() O método "abstrai" de onde o campo "distinto" especificado está realmente dentro de uma matriz. Nesse caso, você precisa chamar $unwind primeiro a processar os elementos da matriz aqui:
Collection.aggregate([
    { "$unwind": "$array" },
    { "$group": {
        "_id": "$array.field",
        "count": { "$sum": 1 }
    }}
],function(err,result) {

});

Então o trabalho principal é feito basicamente no $group por "agrupamento" nos valores do campo, o que significa a mesma coisa que "distinto". A $sum é um operador de agrupamento que neste caso apenas soma 1 para cada ocorrência desse valor no campo dessa coleção.