2

私はMongodbに次のようなコレクションを持っています:

{_id: {"thread": "abc"}, "value": 1}
{_id: {"thread": "cdf"}, "value": 1}
{_id: {"thread": "edf"}, "value": 1}

次のような出力を期待して、valueをキー入力しようとしてreduceをマップしようとしました。

{id_: {"value": 1}, value: 3}

地図:

function() {
var key = {value : this.value};
emit(key, 1);
};

減らす:

function(key, values) {
var sum = 0;
values.forEach(function(value) {
sum += value;});
return sum;
};

元の質問を編集:MapReduceが機能しませんでしたが無効になりました。これは接続の問題であり、MapReduceではありませんでした。余分な情報を提供してくれた皆さんに感謝します。

残念ながら、それは機能せず、次のような出力が得られました。

{u'_id': {u'value': None}, u'value': 1160856.0}

整数値をキー入力することはできませんか?Mongodbのmapreduceドキュメントを読みましたが、キーのデータ型に関連する情報が見つかりませんでした。

4

1 に答える 1

3

MongoDBシェルからmap/reduceを実行している場合は、機能/問題が発生している可能性があります(意見はその1つによって異なります;))。シェルはすべての整数型をdoubleに変換し、そのように格納します。現在、シェル以外からm/rを呼び出す以外に実際の回避策はありません。そうは言っても、私があなたのm / rを実行すると、これが得られます:

{
        "_id" : {
                "value" : 1
        },
        "value" : 3
}

それがあなたがやろうとしていることのようです。そうかどうかはわかりません。最新のdbバージョンなどを実行していることを確認してください。

于 2012-04-10T09:52:35.427 に答える