Search:

Search all manuals
Search this manual
Manual
Couchbase Developer's Guide 2.0
Community Wiki and Resources
Download Couchbase Server 2.0
Couchbase Server 2.0 Manual
Client Libraries
Couchbase Server Forum
Additional Resources
Community Wiki
Community Forums
Couchbase SDKs
Parent Section
4 Finding Data with Views
Chapter Sections
Chapters

4.5. Ordering Results

When you query a view, you can provide parameters that indicate the order of results; there are also parameters you use to indicate a start and end for a result set as we described earlier. When you provide these types of query parameters, this is how Couchbase functions:

  1. Begin collecting results from the top of the index, or at the start position specified.

  2. Provide one row from the index at a time, until the end of the index, or until the specified end key.

For instance imagine the simplest case where Couchbase Server generates this index based on a view:

Key		Value
0		"foo"
1		"bar"
2		"baz"

We use the Ruby SDK to retrieve all the results in descending order:

doc.foo_bar(:descending => :true )

We query the view named foo_bar and indicate we want the results to be in descending order by providing the :descending parameter set to true. In this case our result set would appear as follows:

Key		Value
2		"baz"	
1		"bar"
0		"foo"

Imagine we want to provide another query parameter along with the :descending, such as a start key. In this case our query would look like this in Ruby:

doc.foo_bar(:descending => :true, :start_key => 1)

Here our result set would look like this:

Key		Value
1		"bar"
0		"foo"

This might not be what you expected: when you indicated the start key, you probably expected the last two items in the index sorted in descending order. But when you specify the order :descending to be true, Couchbase Server will read index items from the bottom of the index upwards. Therefore you get the items in position 1 then 0 from the index. To get the results in position 1 and 2, you would invert the logic of your query and use the :endkey parameter set to 1:

doc.foo_bar(:descending => :true, :end_key => 1)

In this case Couchbase Server will start reading items at the last position of 2, and then add the item from position 1. Your result set will appear as follows:

Key		Value
2		"baz"	
1		"bar"

Couchbase Server sorts results in ascending or descending order based on the value of the key; for instance if you sort in ascending order, keys starting with 'a' will be in a higher position than those starting with 'c'. For more information about sorting rules and values in Couchbase Server, see Couchbase Server 2.0 Manual, Ordering