CouchDB返回"错误" TOTAL_ROWS

时间:2015-11-24 20:08:19

标签: mapreduce couchdb

我的CouchDB中有5680个文档。

我用以下内容减少了它:

function(doc) {
  if (doc.address.country && doc.cats) {
     for (i = 0; i < doc.cats.length; i++) { 
       emit([doc.address.country, doc.cats[i].id], doc);
     }    
  }
}

运行我的观点: MyView的键= [&#34; CC&#34;&#34;类别&#34;]?

返回预期结果(25项)。

然而,回复中有一个字段:

{"total_rows":5680,"offset":5655, ...

total_rows count是我的完整数据集,不仅是与我的查询匹配的数据集。有没有办法在结果中查看匹配的行?

我想防止重复地图代码只是添加一个reduce函数。另外,我想防止两个http请求仅用于该信息。

对我来说,这些信息对于实现像分页这样的东西很有用。

我读过这个: http://docs.couchdb.org/en/1.6.1/couchapp/views/pagination.html

但是他们并没有对我的数据行的有限子集进行分页。

正如我发现的那样,简单地从总行中减去偏移量当然不会起作用。

如何在回复中获得正确的total_rows数量,或者我的用例中的最佳做法是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

total_rows值是视图中的总行数。如果视图显示数据库中的所有行,那么它将是相同的值。您是正确的,它不是该查询中返回的行数。查询中返回的行数不会显示为单独的值,但通过获取返回的行数组的长度可以轻易找到。