1

CouchDB を使用して簡単なタスクを計算する必要があります。しかし、私はいくつかの問題に遭遇しました: Sate 文字列表現のタイムスタンプを適切に変換できません。これは私の機能です:

function(doc) {
    if (doc.temp > -50 && doc.temp < 50 ) {
        var date = new Date(doc.time); 
        emit(date, doc.temp);
    }
}

同じ時間に発生するさまざまなイベントをグループ化する必要があります。しかし、このクラスは null の日付オブジェクトを生成し、その理由がわかりません。

さらに、オーバーフローするため、平均を計算するreduce関数も機能しません。

function(keys, values) {
  return sum(values)/values.length;
}

このフォームに変更すると、最初の関数を機能させることができます。

function(doc) {
    if (doc.temp > -50 && doc.temp < 50 ) {
        emit(Math.round(doc.time/360000), doc.temp);
    }
}
4

2 に答える 2

1

reduce 関数が機能しない理由は、re-reduce ケースを処理しないためです。

reduce 関数では、map 関数の結果の一部をreduce 関数で処理します。この場合、rereduce パラメータは false です。

reduce 関数は、以前の reduce 呼び出しの結果の一部を処理する必要もあります。この場合、rereduce パラメータは true です。

ドキュメントを参照してください: http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views#Reduce_vs_rereduce

于 2013-02-15T21:45:51.027 に答える
0

CouchDB は、非常に効率的な組み込みの reduce 関数を提供します。平均を計算する必要がある場合は_stats、reduce 関数として使用してからsum/countクライアント側で計算することをお勧めします。

于 2013-03-19T07:24:00.470 に答える