incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Robert Newson <robert.new...@gmail.com>
Subject Re: Need to get total rows of startkey/endkey range for paging
Date Sat, 02 Apr 2011 10:17:06 GMT
How will your grid cope with the number of rows changing between your
first query to get the count and subsequently fetching the pages?

I don't think you can know the number of pages of results up front
like this. CouchDB pagination usually follows a different algorithm.
For pages of size N, you query with ?limit=N+1 and omit the N+1'th
from being displayed. If you get N+1 results, then you can display a
'next page' button. If it's selected, your startkey parameter is the
N+1'th key. To paginate correctly when your view has more than one row
for the same key, look at startkey_docid and endkey_docid.

Afaik, couchdb does not provide you with the information you need to
paginate correctly in the manner you describe. Other b-tree
implementations could give the number of rows between startkey/endkey
efficiently, and other databases could provide a Cursor that would
show you the results as of a point in time. CouchDB does neither.

B.

On 2 April 2011 07:44, Nils Breunese <N.Breunese@vpro.nl> wrote:
> If you set the reduce function of your view to '_count' you will get the number of items.
Query with ?reduce=false if you want to get the items instead of just the count.
>
> See http://wiki.apache.org/couchdb/Built-In_Reduce_Functions for more info on built-in
reduce functions.
>
> Nils.
> ________________________________________
> Van: Andrew Stuart (SuperCoders) [andrew.stuart@supercoders.com.au]
> Verzonden: zaterdag 2 april 2011 7:27
> Aan: user@couchdb.apache.org
> Onderwerp: Need to get total rows of startkey/endkey range for paging
>
> Hey there folks
>
> I am issuing a query to a view which uses startkey and endkey to
> constrain the range of values to be retrieved from the view.  Within
> this I am using skip and limit to page through the results.
>
> The problem is that I need the count of the number of total rows, not
> of the view, but of the range defined by startkey and endkey.
>
> This is needed because I am putting the data into a paging grid, and
> the paging grid needs to know the total rows so it knows how big to
> make the grid and so it knows where the bottom is.
>
> If you are interested here is a sample query:
>
> http://192.168.1.108/couchdb/test/_design/blah/_view/by_surname2?startkey=%22s%22&endkey=%22s%E9%A6%99%22&_dc=1301721696775&page=4&skip=900&limit=300
>
> Views do of course return the total number of items in the view, but I
> need not the total items in the view but the total items in the
> startkey/endkey range.
>
> Can anyone suggest if this is possible?
>
> thanks
> ------------------------------------------------------------------------
>  VPRO   www.vpro.nl
> ------------------------------------------------------------------------
>

Mime
View raw message