Map/Reduce に関する別の質問はまだありません。
次のようなコレクション " example
" があります。
{
"userid" : "somehash",
"channel" : "Channel 1"
}
私の Map/Reduce 関数は次のようになります。
var map = function () {
emit(this.channel, {user:this.userid, count: 1});
}
var reduce = function (key, values) {
var result = {total:0, unique:0};
var temp = [];
values.forEach(function (value) {
result.total += value.count;
if (temp.indexOf(value.user) == -1) {
temp.push(value.user);
}
});
result.unique += temp.length;
return result;
}
残念ながら、それは私にいくつかの本当に奇妙な結果をもたらします:
{ "_id" : "Channel 1", "value" : { "total" : NaN, "unique" : 47 } }
{ "_id" : "Channel 2", "value" : { "total" : NaN, "unique" : 12 } }
{ "_id" : "Channel 3", "value" : { "total" : 6, "unique" : 6 } }
また、「ユニーク」も正しい値ではないようですvalue.count
。null
私がやりたいことは、各チャネルのすべての値をカウントし、各ユーザーの一意の値を確認できるように計算することです。つまり、このコレクション内のドキュメント はexample
複数回出現する可能性があります。私はすべての時間とユニークな時間を知りたい.
私はこのガイドに従いました: http://www.mongodb.org/display/DOCS/MapReduce#MapReduce-ReduceFunctionnull
そして、なぜ私が顔に投げられるのかわからないのですか? 非常に奇妙ですが、この件に関して何か良いアイデアはありますか?
アドバイスとより良い知恵をありがとう。