需要解释couchdb reduce函数吗
从 couchdb reduce函数定义为需要解释couchdb reduce函数吗,couchdb,couchdb-futon,Couchdb,Couchdb Futon,从 couchdb reduce函数定义为 键将是一个数组,其元素 是形式为[key,id]的数组 值将是一个值数组 为相应的元素发射 钥匙 i、 e.减少([[key1,id1],[key2,id2],[key3,id3],[value1,value2,value3],false) 我无法理解键数组何时/为什么包含不同的键值。如果键数组包含不同的键值,我将如何处理它 例如,假设我的数据库包含表单帐户之间的移动 我想要一个能给出账户余额的视图 “我的地图”功能执行以下操作: 我的reduce
- 键将是一个数组,其元素 是形式为[key,id]的数组
- 值将是一个值数组 为相应的元素发射 钥匙
- i、 e.减少([[key1,id1],[key2,id2],[key3,id3],[value1,value2,value3],false)
通过原始HTTP API,您将获得一个针对所有帐户的总reduce,这可能没有什么用处。因此,请记住在您自己的应用程序中使用group=true,以确保每个帐户都有摘要。在这种情况下,您能否依靠使用相同的key值获取key参数中的所有值?您将在HTTP查询的结果中获取所有值。换句话说,你的平衡是正确的。但是,您不能依靠一次将所有值传递给
reduce()
函数。这是CouchDB的主要权衡之一。换句话说,您所述的函数将起作用,因为假设group=true,它将始终为一个帐户累积。当另一个帐户启动时,该值将为您重置回0。
function (key, values, rereduce) {
return sum(values);
}
{"amount":100, "CreditAccount":"account_number", "DebitAccount":"account_number"}
emit( doc.CreditAccount, doc.amount )
emit( doc.DebitAccount, -doc.amount )