CouchDB';s group=真的防止再减少?

CouchDB';s group=真的防止再减少?,couchdb,Couchdb,CouchDB的映射函数发出键/值对: function(doc) { emit(doc.date, 1); } 可能有许多键/值对具有相同的键。查询视图时设置group=true,将具有相同键的键/值对分组到相同的reduce中: function(keys, values, rereduce) { return sum(values); } 这是否意味着如果group=true(或对于任何group\u级别>0),每个键将恰好减少一次 或者,分组是否只保证所有reduce都具有相

CouchDB的映射函数发出键/值对:

function(doc) {
  emit(doc.date, 1);
}
可能有许多键/值对具有相同的键。查询视图时设置
group=true
,将具有相同键的键/值对分组到相同的reduce中:

function(keys, values, rereduce) {
  return sum(values);
}
这是否意味着如果
group=true
(或对于任何
group\u级别
>0),每个键将恰好减少一次

或者,分组是否只保证所有reduce都具有相同的密钥,并且仍然可以有一个或多个reduce


我正在使用一个reduce函数,它不是可交换的,但每个键不会有大量记录。我希望能够设置
group=true
,然后在单个reduce中控制操作顺序。如果会有重新推导,那么这个计划就没有意义。

group=true
大致意思是“嘿,coach!按照所有键都不同的方式对这张地图进行分组,但不要遗漏任何一个键!”实际上等于
group_level=999
(请参阅)

虽然您可能无法使用适当的
group\u level
进行猜测并删除一些关键项(如果关键项是一个数组,则有意义),
group
会为您解决此问题,并且不会应用REREREREDUCE


此外,您的reduce函数可以替换为内置函数-它在Erlang中实现,速度更快。

group=true
大致意思是“嘿,coach!按所有键都不同的方式对地图进行分组,但不要遗漏任何键!”实际上等于
group_level=999
(请参阅)

虽然您可能无法使用适当的
group\u level
进行猜测并删除一些关键项(如果关键项是一个数组,则有意义),
group
会为您解决此问题,并且不会应用REREREREDUCE


此外,您的reduce函数可以替换为内置函数-它在Erlang中实现,速度更快。

因此,您的建议是,任何大于0的组级别都不会发生reduce?这类组级别永远不会发生,没有必要减少相似的唯一键。那么你是说当需要减少相似的键时可能会发生重新减少?我恐怕无法确定这个答案归结为“是”还是“否”。也许第二句话可以换个说法?@Kxepal,当group_level设置为999且group为true时,将永远不会发生重减,是吗?所以你的意思是,任何大于0的group_level都不会发生重减?这类group_level永远不会发生,没有必要减少相似的唯一键。那么你是说当需要减少相似的键时可能会发生重新减少?我恐怕无法确定这个答案归结为“是”还是“否”。也许第二句话可以重新表述?@Kxepal,当group_level设置为999且group为true时,将永远不会发生重新减少,是吗?“这是否意味着group=true时,每个键将只减少一次?”我有同样的问题,请你有结论吗?“这是否意味着使用group=true时,每个键将恰好有一个reduce?”我有同样的问题,请问您有结论吗?