Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mongodb映射减少的输出结果比我想象的要少_Mongodb - Fatal编程技术网

mongodb映射减少的输出结果比我想象的要少

mongodb映射减少的输出结果比我想象的要少,mongodb,Mongodb,地图代码: $map = new MongoCode("function(){ emit(333,this); }"); 减少代码: $reduce = new MongoCode("function(key, values) { r=0; for(var idx=0;idx<values.length;idx++){ r+=1; } return r; }")

地图代码:

$map = new MongoCode("function(){
                emit(333,this);
}");
减少代码:

$reduce = new MongoCode("function(key, values) {
        r=0;
        for(var idx=0;idx<values.length;idx++){
                r+=1;
        }
        return r;
}");
运行代码返回: 大堆 [结果]=>gameLogResult [timeMillis]=>284 [计数]=>阵列 [输入]=>18864 [发射]=>18864 [减少]=>189 [输出]=>1

map-reduce的结果是{u-id:333,value:65},bug我假设的结果是{u-id:333,value:18864}
谁能告诉我这是为什么,帮帮我

我回答了一个类似的问题,解释了Map/Reduce批处理如何在一个简单的案例中工作

我有点不明白你在这里想干什么。如果您只是想统计记录,为什么不使用db.gameLog.count呢?如果您确实想使用Map/Reduce来计数记录,您可以这样做,这不是最佳的,但最容易理解:

map = function(){
    emit("arbitrary_key", 1)
}

reduce = function(key, values){
    var total = 0;
    for (var i = 0; i < values.length; i++) {
        total += values[i];
    }
    return total;
}

这是因为批处理,reduce函数可以并且将运行多次,每100批运行一次,将101个结果添加到下一批中,您还需要减少您的排放量,而不是完全不同。我明白了,非常感谢
[ok] => 1
map = function(){
    emit("arbitrary_key", 1)
}

reduce = function(key, values){
    var total = 0;
    for (var i = 0; i < values.length; i++) {
        total += values[i];
    }
    return total;
}