9
从http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views需要CouchDB的说明减少功能
CouchDB的降低函数被定义为
function (key, values, rereduce) { return sum(values); }
- 键将是一个数组,其元素 的形式是阵列[关键,id]
- values将是为resp发出的数值 ective元件 在键
- 即减少我有([[KEY1,ID1],[KEY2,ID2],[KEY3,ID3]],[值1,值2,值3],假)
无法理解何时/为什么键数组将包含不同的键值。如果键数组包含不同的键值,我将如何处理它?
作为示例,假设我的数据库包含表单帐户之间的移动。
{"amount":100, "CreditAccount":"account_number", "DebitAccount":"account_number"}
我希望有一个观点,即给出了一个账户的余额。
我的地图功能的作用:
emit(doc.CreditAccount, doc.amount) emit(doc.DebitAccount, -doc.amount)
我的减少功能的作用:
返回总和(值);
我似乎得到了预期的结果,但我无法调和这与我的reduce函数获得不同关键值的可能性。
我的缩小函数是否应该先将关键值分组?在这种情况下,我会返回什么样的结果?
在这种情况下,您可以依赖于使用相同的键值获取关键参数中的所有值吗? – Alan 2010-05-04 16:04:16
您*将*获取HTTP查询结果中的所有值。换句话说,你的平衡是正确的。然而,你**不能依靠一次性传递给你的'reduce()'函数的所有值。这是CouchDB的主要权衡之一。 – JasonSmith 2010-05-04 18:13:48
换句话说,你陈述的功能将起作用,因为**假设group = true **它总是会累积一个帐户。当另一个帐户启动时,该值将重置为0。 – JasonSmith 2010-05-04 18:20:54