2012-03-29 93 views

回答

6

我认为http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views#Reduce_vs_rereduce给你一个很好的概述。由于性能optimations时,减少功能可以被称为在两个层面:

  • 以减轻块
  • 减小第一步骤的结果

在第二级中,参数rereducetrue。有关示例,请参见http://wiki.apache.org/couchdb/Built-In_Reduce_Functions#A_sum。在第一步中,块的长度(values)被返回,在rereduce级别,这些长度必须加总。

+1

感谢您的链接。可以将一组数据发送到缩小功能超过2次(2个级别)吗?这是减少,重新减少和再次减少? – Manoj 2012-03-29 21:32:16

+0

所以作为一个人为的例子,假设你有一个字符串数字列表,并且你想减少所有数字。第一个“级别”将对键和(字符串)值本身进行操作,将它们转换为数字并对它们进行求和。第二个“级别”(rereduce == true)可以处理第一级(数字)的结果,并简单地将它们求和即可,而不需要解析任何字符串。 – aaaidan 2012-03-29 21:34:04

+0

谢谢@aaaidan。再一次澄清。为什么下面的函数效率低下:var rv = {}; (i值){ var value = values [i]; (k值){ rv [k] =(rv [k] || 0)+值[k]; } } return rv;我从以下链接中获取此信息 - http://blog.mudynamics.com/wp-content/uploads/2009/04/icouch.html - 用户尝试的唯一相机#1 – Manoj 2012-03-29 21:43:19

-1

还有的rereduce参数here的解释。

Quote:释义。更多信息在链接。

这里是一个减少函数的例子:

function (key, values, rereduce) { 
    return sum(values); 
} 

Reduce函数必须处理两种情况,当rereduce是真实的,当它是假的。

+0

这不是一个好的答案,因为它不能解释为什么该示例允许rereduce为真。这是误导,因为它没有说明在每种情况下输入键和值是什么 – 2017-10-26 07:03:00

+0

感谢您的解释@ZachSmith – aaaidan 2017-10-27 14:25:44

相关问题