couchdb查看/减少。有时你可以返回值,有时你不能..?

时间:2012-01-05 23:48:07

标签: view couchdb reduce

这是最新版本的couchbase服务器。

最终目标是使用reduce / groupby将重复键的值聚合到一个具有数组值的行中。

查看没有缩小/分组的结果(实际上可能有50行像这样发出):

{
"total_rows": 3,
"offset": 0,
"rows": [
{
"id": "1806a62a75b82aa6071a8a7a95d1741d",
"key": "064b6b4b-8e08-4806-b095-9e59495ac050",
"value": "1806a62a75b82aa6071a8a7a95d1741d"
},
{
"id": "47abb54bf31d39946117f6bfd1b088af",
"key": "064b6b4b-8e08-4806-b095-9e59495ac050",
"value": "47abb54bf31d39946117f6bfd1b088af"
},
{
"id": "ed6a3dd3-27f9-4845-ac21-f8a5767ae90f",
"key": "064b6b4b-8e08-4806-b095-9e59495ac050",
"value": "ed6a3dd3-27f9-4845-ac21-f8a5767ae90f"
}
}

with reduce + group_level = 1:

function(keys,values,re){
  return values;
}

从沙发中产生一个错误,实际视图中有50行左右(即使视图行数较少也会失败)。沙发说了一些关于数据没有迅速缩小的事情。然而,当视图键是整数并且存在少量数据时,这种类型的东西仍然可以正常工作。

有人可以向我解释一下这个区别吗?

2 个答案:

答案 0 :(得分:2)

由于它们以内部b树数据格式存储的方式的性质,减少值需要保持尽可能小。 wiki中有一些关于为什么会这样的信息。

如果要识别唯一值,则需要在map函数中完成。同一个wiki页面上的这个section显示了一个可以用来执行此操作的方法。 (我确定还有其他人)

答案 1 :(得分:0)

我几乎总是使用“key”参数查询此视图,因此实际上不需要通过沙发来聚合值,可以在应用程序中轻松高效地完成。