0

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 なのですか? 結果の数を減らすとはどういう意味ですか? 助けて!前もって感謝します!!!

4

1 に答える 1