【发布时间】:2014-03-20 01:11:46
【问题描述】:
这里有很多与使用 CouchDB 进行分页相关的问题,但没有一个完全符合我的疑惑。
基本上,我有一个按票数排名的结果集,我想按降序翻页。
这是map 供参考。
function(doc) {
emit(doc.votes);
}
现在,问题来了。我发现startkey_docid 不能单独工作。您必须将它与startkey 结合使用。问题是,对于查询,我不使用startkey 参数(我不想限制结果,只是获得最多-> 最少)。我在想我可以改用 startkey={{doc.votes}}&startkey_docid={{doc._id}} ,但是当有人单击“下一页”链接时,文档的投票数可能已经改变。
解决这个问题的方法似乎很明显:只需设置startkey=99999999,这样它就会返回数据库中的所有文档,我可以使用startkey_docid 从我们上次离开的那个开始。奇怪的是,当我这样做时,startkey_docid 停止工作,只允许再次返回所有结果。显然startkey 需要与_id 在startkey_docid 中使用的文档上的键完全相同。
我要问的是,当实际的startkey 可能在您想要使用它时发生变化时,是否有人知道使用startkey_docid 进行分页的解决方法?我的应用程序是否应该只通过_id 查找文档并立即使用doc.votes 值,希望它在请求之间的几毫秒内没有改变?即使这样似乎也不是很可靠。
编辑:最终为了速度而切换到 Mongo,所以这个问题变得有点没有实际意义。
【问题讨论】:
标签: couchdb