С http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views
Функция преобразования couchdb определяется как
function (key, values, rereduce) {
return sum(values);
}
- ключ будет массив, элементы которого
являются массивами вида [key, id]
- значения будут массивом значений
испускается для соответствующих элементов
в ключах
- т.е. уменьшить ([[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 сначала группировать значения ключей? Какой результат я бы вернул в этом случае?