我的 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/