MongoDB compte une valeur distincte?

Voici ci-dessous, mon code. Je dois calculer combien de fois la valeur distincte a été répétée. Ici, j'ai une valeur distinctive dans les «résultats». J'ai utilisé collection.count () pour calculer, mais ce n'est pas le cas. S'il vous plaît, dites-moi où je dois vous tromper. Merci beaucoup .

var DistinctIntoSingleDB = function(Collection,arr,opt,distVal,callback){ Collection.find({}).distinct(distVal, function(err, results) { if(!err && results){ console.log("Distinct Row Length :", results.length); var a,arr1 = []; for(var j=0; j<results.length; j++){ collection.count({'V6': results[j]}, function(err, count) { console.log(count) }); arr1.push(results[j]+ " : " +a); } callback(results,arr1); }else{ console.log(err, results); callback(results); } }); 

    Pour obtenir des occurrences de valeurs distinctes d'un champ 'field1' sur une collection 'col1' et écrire dans une collection distincte 'distinctCount'. Permet également d'utiliser l'espace disque dans le cas où la collecte est énorme.

     db.col1.aggregate( [{$group: { _id: "$field1", count: { $sum : 1 } }}, { $group: { _id: "$_id", count: { $sum : "$count" } }},{ $out: "distinctCount" }], {allowDiskUse:true} ) 

    Alors que .distinct() fonctionne bien pour simplement obtenir les valeurs distinctes d'un champ, afin d'obtenir effectivement les comptes d'occurrences, cela est mieux adapté au cadre d'agrégation :

     Collection.aggregate([ { "$group": { "_id": "$field", "count": { "$sum": 1 } }} ],function(err,result) { }); 

    De plus, la méthode .distinct() "abstrait" d'où le champ "distinct" spécifié est effectivement dans un tableau. Dans ce cas, vous devez d'abord appeler $unwind pour 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 se fait essentiellement dans le $group en regroupant les valeurs du champ, ce qui signifie la même chose que «distinct». La $sum est un opérateur de groupement qui, dans ce cas, ajoute seulement 1 pour chaque occurrence de cette valeur dans le champ pour cette collection.