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
Mongodb map/reduce finalize()并不总是获得相同数量的参数_Mongodb_Mapreduce - Fatal编程技术网

Mongodb map/reduce finalize()并不总是获得相同数量的参数

Mongodb map/reduce finalize()并不总是获得相同数量的参数,mongodb,mapreduce,Mongodb,Mapreduce,在MongoDb 2.0.1上使用map/reduce时,finalize方法似乎并不总是使用相同的参数调用 我正在做一个定期的计数+最后的平均值 var m = function() { emit(this.testName, { worked: Number(this.testStatus == "WORKED"), failed: Number(this.testStatus == "FAILED"), done: Number(th

在MongoDb 2.0.1上使用map/reduce时,finalize方法似乎并不总是使用相同的参数调用

我正在做一个定期的计数+最后的平均值

var m = function() {
    emit(this.testName, {
        worked: Number(this.testStatus == "WORKED"),
        failed: Number(this.testStatus == "FAILED"),
        done: Number(this.testStatus == "DONE"),
        count: 1
    });
}

var r = function(key, values) {
    var result = {
        worked: 0,
        failed: 0,
        done: 0,
        count: 0
    }

    values.forEach(function(value) {
      result.worked += value.worked;
      result.failed += value.failed;
      result.done += value.done;
      result.count += value.count;
    });

    return result;
}

var f = function(key, value) {
    data = value || key;
    data.workedMean = data.worked / data.count;
    return data;
}

var cmd = {
    mapreduce: "tests",
    map: m,
    reduce: r,
    finalize: f,
    out: {
        reduce: "fromMongo"
    },
    jsMode: true
}
当fromMongo集合为空时,只使用一个参数(值)调用f。当fromMongo已经有值时,请注意我使用reduce作为out-map/reduce参数,f方法得到两个参数:key和value

这是已知的行为吗?
我使用data=value | | key;,成功地完成了两项任务;,但我认为这不是解决办法

此问题是由于在reduce模式的后处理过程中,jsMode和non-jsMode之间的finalize调用不同造成的。 解决方法是不使用jsMode:true,在这种情况下,应该始终使用key、value调用它

创建了一个服务器问题:

好吧,我想这是一个解决方案。谢谢