1

CouchDB の map 関数は、キーと値のペアを発行します。

function(doc) {
  emit(doc.date, 1);
}

潜在的に、同じキーを持つ多くのキーと値のペアが存在する可能性があります。ビューのクエリ中に設定group=trueすると、同じキーを持つキーと値のペアが同じリデュースにグループ化されます。

function(keys, values, rereduce) {
  return sum(values);
}

group=trueこれは、 (またはgroup_level> 0 の場合)、キーごとに正確に 1 つの reduceがあることを意味しますか?

それとも、グループ化は、すべての reduce が同種のキーを持つこと、および 1 つ以上の rereduce がまだ存在する可能性があることのみを保証しますか?

可換ではないが、キーごとに多数のレコードを持たないreduce関数を使用しています。group=true1回のreduceで操作の順序を設定して制御できるようになることを望んでいました。再削減がある場合、その計画は意味がありません。

4

1 に答える 1

1

group=true大まかに言うと、「ねえ、カウチ!すべてのキーが区別されるようにこのマップをグループ化しますが、それらのケースを見逃さないでください!」実際にはに等しいgroup_level=999ドキュメントを参照)。

適切group_levelに推測していくつかのキー項目を削除することはできないかもしれませんが(キーが配列である場合は意味があります)、groupこれを処理し、rereduceは適用されません。

また、reduce関数は組み込みのものに置き換えることができます_sum-Erlangで実装されており、はるかに高速です。

于 2012-11-12T06:17:54.090 に答える