couchdb Erlang Reduce - совокупный объект - PullRequest
0 голосов
/ 13 июня 2018

Скажем, у меня есть карта, которая испускает следующие объекты

{"basePoints": 2000, "bonusPoints": 1000}
{"basePoints": 1000, "bonusPoints": 50}
{"basePoints": 10000, "bonusPoints": 5000}

Как я мог бы написать редукцию в Erlang (не javascript), которая бы возвращала агрегированный объект, подобный этому:

{"basePoints": 13000, "bonusPoints": 6050}

(я бы предпочел не писать 2 отдельных представления, которые генерируют каждое значение отдельно, если я могу помочь)

Большое спасибо!

1 Ответ

0 голосов
/ 14 июня 2018

На самом деле вам не нужно специальное уменьшение, в этом случае вы можете использовать стандарт _sum, поскольку он может суммировать не только числа, но и массивы чисел.

Просто выделите [basePointsNum, 0] для basePoints и [0, bonusPointsNum] для bonusPoints.Или, если у вас есть оба поля в одном документе, вы можете указать [basePointsNum, bonusPointsNum].

После сокращения с использованием встроенного _sum вы получите массив из двух чисел, каждое из которых является суммой соответствующего столбца индекса.Эта функция, по-видимому, недокументирована, но работает как для CouchDB, так и для PouchDB, и работает быстро.

...