MongoDb 2.0.1でmap/reduceを使用すると、finalizeメソッドが常に同じ引数で呼び出されるとは限りません。map/reduce finalize()が常に同じ数のパラメータを取得するとは限りません
私は通常のカウント+平均を最後にしています。 fromMongo
コレクションが空の場合
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
}
、fは()だけで一つの引数、value
と呼ばれています。 fromMongo
に既に値がある場合(out
map/reduceパラメータとしてreduce
を使用していることに注意してください)、f()メソッドには2つの引数:key
とvalue
があります。
これは既知の動作ですか? 私はdata = value || key;
を使って2つの作業を管理しましたが、これは解決策ではないと私は考えています。
をまあ、私はこれは "ソリューション" であると思います。ありがとう – Jonas