mapreduce 関数をテストしていますが、予期しない動作をします:
コレクションにこの単純な for サイクルを設定しました。
for (i=0; i<10000; i++) {db.coll.insert({'a':1,'b':2})}
だから私は同じ「a」値を持つドキュメントを数えたいです(それはテストです:-))私のマップ関数は
map = "function() { emit(this.a,this.b);}"
reduce は次のとおりです。
reduce = "function (key,values) {return values.length;}"
db.coll.mapReduce(map, reduce, {out:{inline:1}}) の呼び出し
期待値は同じ 'a' の 10000 個のドキュメントです。大丈夫ですか?
しかし、結果は次のとおりです。
db.coll.mapReduce(map, reduce, {out:{inline:1}})
{
"results" : [
{
"_id" : 1,
"value" : 101
}
],
"timeMillis" : 892,
"counts" : {
"input" : 10000,
"emit" : 10000,
"reduce" : 100,
"output" : 1
},
"ok" : 1,
}
問題はどこだ???なぜ値は 101 なのですか? 結果の数を減らすとはどういう意味ですか? 助けて!前もって感謝します!!!