实际上这个问题是由here https://stackoverflow.com/questions/13338799/does-couchdbs-group-true-prevent-rereduce的其他人提出的。
但是没有令人信服的答案。
group = true是group_level = exact的概念等价物,因此CouchDB在地图行集中运行每个唯一键的减少量。
这是doc中解释的方式。 听起来CouchDB会收集相同密钥的所有值,每个不同密钥只减少一次。
但在另一个article中,据说
如果查询是关于每个键的reduce值(group_by_key = true), 然后CouchDB尝试找到每个键的边界。从此范围 可能不完全符合B + Tree节点,CouchDB需要 弄清楚两端的边缘以找到部分匹配的假 B + Tree节点并将其地图结果(使用该键)重新发送到View 服务器。然后,此减少结果将与现有的rereduce合并 结果计算此密钥的最终减少结果。
听起来当group = true时可能会发生rereduce。
在我的项目中,有许多文档,但在为每个不同的键分组后,有大多数2个值具有相同的键。 在这种情况下会发生重新减少吗?
最好的问候
答案 0 :(得分:0)
是。 Rereduce总是有可能。
如果这是一个问题,reduce函数中有一个rereduce参数,可以让你检测是否发生这种情况。
http://docs.couchdb.org/en/latest/couchapp/ddocs.html#reduce-and-rereduce-functions