だから私は一般的にmongodbとmapreduceに不慣れで、この「癖」(または少なくとも私の心の中では癖)に出くわしました
コレクションに次のようなオブジェクトがあるとします。
{'キー':5, '値':5}
{'キー':5, '値':4}
{'キー':5, '値':1}
{'キー':4, '値':6}
{'キー':4, '値':4}
{'キー':3, '値':0}
私のマップ関数は、単にキーと値を発行します
私のreduce関数は単に値を追加し、それらを返す前に1を追加します(reduce関数が呼び出されたかどうかを確認するためにこれを行いました)
私の結果は次のとおりです。
{'_id': 3、'値': 0 }
{'_id':4、'値': 11.0}
{'_id':5、'値': 11.0}
ご覧のとおり、キー 4 と 5 については 11 という予想される答えが得られますが、キー 3 については (そのキーを持つコレクション内のエントリが 1 つしかないため) 予想外の 0 が得られます!
これは mapreduce の一般的な自然な動作ですか? MongoDB の場合は? pymongo(私が使用している)の場合は?