1

CouchDB 的 map 函数发出键/值对:

function(doc) {
  emit(doc.date, 1);
}

潜在地,可能有许多具有相同键的键/值对。在查询视图时设置将group=true具有相同键的键/值对分组到相同的 reduce 中:

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

这是否意味着group=true(或任何group_level> 0),每个键都会有一个减少

还是分组只保证所有reduce都具有同构键,并且仍然可能有一个或多个rereduce?

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

4

1 回答 1

1

group=true粗略的意思是“嘿,沙发!把这张地图分组,让所有的键都是不同的,但不要错过任何一个!” 实际上等于group_level=999(请参阅文档)。

虽然您可能无法正确猜测group_level并删除一些关键项目(如果 key 是一个数组,那么它是有意义的),group请为您处理好这一点,并且不会应用 rereduce。

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

于 2012-11-12T06:17:54.090 回答