couchdb erlang reduce - 聚合对象

Posted

技术标签:

【中文标题】couchdb erlang reduce - 聚合对象【英文标题】:couchdb erlang reduce - aggregate object 【发布时间】:2018-11-22 23:53:02 【问题描述】:

假设我有一张发出以下对象的地图

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

如何在 Erlang(不是 javascript)中编写一个 reduce 来返回这样的聚合对象:

"basePoints": 13000, "bonusPoints": 6050

(如果可以的话,我宁愿不必编写 2 个单独的视图来分别发出每个值)

非常感谢!

【问题讨论】:

【参考方案1】:

你实际上不需要特殊的 reduce,在这种情况下你可以使用标准的 _sum,因为它不仅可以求和数字,还可以求和数字数组。

只需为basePoints 发出[basePointsNum, 0],为bonusPoints 发出[0, bonusPointsNum]。或者,如果您在一个文档中同时包含这两个字段,您可能会发出 [basePointsNum, bonusPointsNum]

使用内置_sum 减少后,您将收到一个包含两个数字的数组,每个数字是相应索引列的总和。此功能似乎没有文档记录,但适用于 CouchDB 和 PouchDB,而且速度非常快。

【讨论】:

以上是关于couchdb erlang reduce - 聚合对象的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CouchDB 中创建 Erlang 视图

CouchDB 视图(map/reduce)

Couchdb如何映射reduce

couchdb - Map Reduce - 如何在 Reduce 函数中加入不同的文档和组结果

对单个键执行 CouchDB reduce 查询

CouchDB:使用 Reduce 时如何在 Map 函数中使用数组键?