couchdb分页与复杂的查询

时间:2011-04-04 18:57:05

标签: pagination couchdb

例如,我们有文本过滤器,例如

docs = db.view(“_ design / filter / _view / substr”,startkey = substring,endkey = substring + u“\ ufff0”,include_docs = True,limit = 20,skip = 0)

在没有慢跳的情况下制作分页的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

首先,我希望你明白这不是全文搜索。你也不能在不使用skip参数的情况下在CouchDB中实现分页,因为你不能说在哪里放(假设)第20个元素。因此,模拟分页的唯一方法是制作“下一个N结果”链接/按钮。

答案 1 :(得分:1)

CouchDB很放松。您现在可以使用skip。它可以很好地工作,你可以专注于其他重要的事情。主要问题是它最终无法扩展。对于小型数据集(最多1,000行左右),我不担心。

但是,从长远来看,这个不会运作良好。您可以使用skip而不是将0设置为204060startkey等。

  1. 第一次查询startkey=substringlimit=20
  2. 查看结果中的最后一行。 key会告诉您它在视图中使用了哪个键。
  3. 因此,您的下一个查询将包含startkey=来自第2步的key值,加上limit=20skip=1
  4. 看看发生了什么?第二个查询从第一个查询结束的地方开始。为避免两次显示相同的行,您只需跳过它。 (您也可以获取它,但在客户端忽略它 - 您的选择。)

    大部分时间都有效。我还建议您查看CouchDB view API中描述的startkey_docid