Javascript MongoDB计数不同值?

Javascript MongoDB计数不同值?,javascript,node.js,mongodb,mongodb-query,aggregation-framework,Javascript,Node.js,Mongodb,Mongodb Query,Aggregation Framework,下面显示我的代码。我必须计算不同值重复的次数。在这里,我在“results”中存储了不同的值。我使用collection.count()进行计算,但它不起作用。请任何人告诉我哪里出了错。多谢各位 var DistinctIntoSingleDB = function(Collection,arr,opt,distVal,callback){ Collection.find({}).distinct(distVal, function(err, results) { if(!err

下面显示我的代码。我必须计算不同值重复的次数。在这里,我在“results”中存储了不同的值。我使用collection.count()进行计算,但它不起作用。请任何人告诉我哪里出了错。多谢各位

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);
      }
 });
var-distincentosingledb=function(Collection、arr、opt、distVal、callback){
Collection.find({}).distinct(distVal,函数(err,results){
if(!err&&results){
log(“不同的行长度:”,results.Length);
var a,arr1=[];
对于(var j=0;jWhile
.distinct()
而言,只需获取字段的不同值即可,为了实际获取出现次数,这更适合于:

Collection.aggregate([
{“$组”:{
“_id”:“$field”,
“计数”:{“$sum”:1}
}}
],函数(错误,结果){
});
另外,
.distinct()
方法会从指定的“distinct”字段实际位于数组中的位置进行“抽象”。在这种情况下,您需要首先调用以在此处处理数组元素:

Collection.aggregate([
{“$unwind”:“$array”},
{“$组”:{
“_id”:“$array.field”,
“计数”:{“$sum”:1}
}}
],函数(错误,结果){
});

因此,主要工作基本上是通过对字段值进行“分组”来完成的,这与“不同”的含义相同。是一个分组运算符,在本例中,它只为该集合字段中该值的每次出现加上
1

以获取集合“col1”上字段“field1”的不同值的出现,并写入单独的集合“distinctCount”。还允许在集合很大的情况下使用磁盘空间

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

第二个
$group
实际上并没有在这里做任何事情,因为它只是使用相同的
\u id
值,并将相同的输出值传递给
$sum
。另外
$out
也是在相同的版本中引入的,默认的
.aggregate()
输出实际上是一个“光标”,因此以前单个BSON文档中的结果问题在这里不再是问题。shell以外的其他API可能会“默认”为BSON文档,但它们可以很容易地更改为返回“游标”。您只需在实际“打算”为结果创建新集合的地方使用
$out