来自http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views
couchdb reduce函数定义为
function (key, values, rereduce) { return sum(values); }
我无法理解何时/为什么键数组将包含不同的键值。如果键数组确实包含不同的键值,我将如何处理它?</ p>
例如,假设我的数据库包含表单帐户之间的移动。
{"amount":100, "CreditAccount":"account_number", "DebitAccount":"account_number"}
我想要一个可以提供帐户余额的视图。
我的地图功能确实:
emit( doc.CreditAccount, doc.amount ) emit( doc.DebitAccount, -doc.amount )
我的reduce功能确实:
返回总和(值);
我似乎得到了预期的结果,但是我无法将此与我的reduce函数获得不同键值的可能性相协调。
我的reduce函数是否应该首先对键值进行分组?在这种情况下,我会返回什么样的结果?
答案 0 :(得分:3)
默认情况下,Futon会对您的搜索结果进行“分组”,这意味着您的每个密钥都会获得新的减少量 - 在您的情况下,即帐户。组功能正是针对这种情况。
在原始HTTP API上,您将获得所有帐户的总减少量,这可能没用。所以请记住在您自己的应用程序中使用group = true以确保您获得每个帐户的摘要。