使用endkey参数进行CouchDB查询

时间:2011-08-26 15:57:26

标签: couchdb

我正在尝试为分页实现上一页功能,我认为使用endkey参数将返回上一页的行,其中最后一行等于endkey。但是,甚至可以在没有startkey的情况下使用endkey参数进行查询吗?

例如:

http://something.com:5984/db3/_design/app/_view/a_view?limit=5&endkey=["ABC","6L","201112"]&descending=false

当我运行此查询时,最后一行的键不等于我指定的结束键。相反,似乎CouchDB只抓取视图中的前5行并完全忽略了endkey参数。

1 个答案:

答案 0 :(得分:5)

使用endkey但不是startkey的查询将隐含地像&startkey=null一样工作。也就是说,CouchDB将从第一行的第一个键开始,一直持续到达结束键。

CouchDB始终从其启动键开始响应,并从其limitendkey值(以先到者为准)停止响应。

要获取 last 5行,您需要向后扫描(降序),然后您的启动键就在您需要的位置。

?limit=5&startkey=["ABC","6L","201112"]&descending=true

结果将按逆转(降序!)顺序排列。你可以在你的客户端中反转它们(它只有五行)或在CouchDB中写一个_list函数来反转它们,然后再发送响应。