http://wiki.apache.org/couchdb/Introduction_to_CouchDB_viewsから
couchdbreduce関数は次のように定義されます
function (key, values, rereduce) { return sum(values); }
- keyは、要素が[key、id]の形式の配列である配列になります。
- 値は、キーのそれぞれの要素に対して発行された値の配列になります
- すなわちreduce([[key1、id1]、[key2、id2]、[key3、id3]]、[value1、value2、value3]、false)
キーの配列に異なるキー値が含まれる場合/理由を理解するのに問題があります。キーの配列に異なるキー値が含まれている場合、どのように処理しますか?
例として、私のデータベースにフォームのアカウント間の移動が含まれていると仮定します。
{"amount":100, "CreditAccount":"account_number", "DebitAccount":"account_number"}
アカウントの残高を示すビューが必要です。
私のマップ関数は次のことを行います。
emit( doc.CreditAccount, doc.amount ) emit( doc.DebitAccount, -doc.amount )
私のreduce関数は次のことを行います。
sum(values);を返します。
期待どおりの結果が得られたようですが、reduce関数が異なるキー値を取得する可能性とこれを調整することはできません。
私のreduce関数は最初にキー値をグループ化することになっていますか?その場合、どのような結果が返されますか?