mapreduce - CouchDB 返回 "wrong"total_rows

标签 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);
     }    
  }
}

运行我的 View : myview?key=["CC","类别"]

返回预期结果(25 项)。

但是响应中有一个字段:

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

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

我想防止复制 map 代码而只添加一个缩减函数。此外,我想阻止仅针对该信息的两个 http 请求。

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

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

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

我发现,简单地从总行数中减去偏移量是行不通的(当然)。

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

谢谢!

最佳答案

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

关于mapreduce - CouchDB 返回 "wrong"total_rows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33902858/

相关文章:

hadoop - 传递一个列表 tp reducer 输出

java - 如何将 CompositeKey 复制/分配到 hadoop 中的另一个 CompositeKey?

hadoop - 仅 map 作业的用例/示例

database - 发电机 : How to distribute workload over the month?

python - 如何在 Web 应用程序的 Docker 镜像中安装并启动 CouchDB 服务器?

java - 如何在没有某些字段的情况下从 couchdb 获取文档?尽可能使用 Ektorp

java - Lightcouch如何检查设计文档是否存在?

mongodb - 在哪里可以找到MongoDB的map/reduce中使用的emit()函数实现?

erlang - CouchDB:Erlang中的map-reduce

ruby - 如何停止思考 "relationally"