Из http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views
Функция сокращения couchdb определяется как
function (key, values, rereduce) { return sum(values); }
- key будет массивом, элементами которого являются массивы формы [key, id]
- values будет массивом значений, испускаемых для соответствующих элементов в ключах
- т.е. уменьшить ([[ключ1, идентификатор1], [ключ2, идентификатор2], [ключ3, идентификатор3]], [значение1, значение2, значение3], ложь)
Мне сложно понять, когда и почему массив ключей может содержать разные значения ключей. Если массив ключей содержит разные значения ключей, как мне с этим справиться?
В качестве примера предположим, что моя база данных содержит перемещения между учетными записями формы.
{"amount":100, "CreditAccount":"account_number", "DebitAccount":"account_number"}
Мне нужен вид, показывающий баланс аккаунта.
Моя функция карты:
emit( doc.CreditAccount, doc.amount ) emit( doc.DebitAccount, -doc.amount )
Моя функция уменьшения:
возвращаемая сумма (значения);
Кажется, я получаю ожидаемые результаты, однако я не могу согласовать это с возможностью того, что моя функция уменьшения получает разные ключевые значения.
Должна ли моя функция сокращения сначала группировать ключевые значения? Какой результат я верну в таком случае?