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 <[email protected]> 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) [[email protected]]
> Verzonden: zaterdag 2 april 2011 7:27
> Aan: [email protected]
> 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
> ------------------------------------------------------------------------
>

Reply via email to