来自http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views
couchdb reduce 函数定义为
function (key, values, rereduce) { return sum(values); }
- key 将是一个数组,其元素是 [key,id] 形式的数组
- values 将是为键中的各个元素发出的值的数组
- 即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 函数获得不同键值的可能性相协调。
我的 reduce 函数是否应该首先对键值进行分组?在那种情况下我会返回什么样的结果?