Query parameters & clauses

When querying your data, you can use your query string to get the data, then sort and manage it on the client. This topic describes a few techniques.

Query examples in this content are shown unencoded to make them easier to read. Keep in mind that you might need to encode query strings if you‘re sending them as part of URLs, such as when you’re executing them with the cURL tool.

For more information, see our Usergrid DBMS overview and Data store best practices.

Contains

Your query can search the text of entity values of the string data type. For example, you can search a postal code field for values that start with a specific three numbers.

For example, the following query selects all restaurants with the word diner in the name:

/restaurants?ql=select * where restaurants contains 'diner'

Note: Not all string properties of the default entities are indexed for searching. This includes the User entity's username property.

The following table lists a few examples of the kind of searches you can do in queries.

Location

If you've stored location data with your entities, you can query for the proximity of the geographical locations those entities represent. For more information on geolocation, see Geolocation.

Order by

You can return query results that are sorted in the order you specify. Use the order by clause to specify the property to sort by, along with the order in which results should be sorted. The syntax for the clause is as follows:

order by <property_name> asc | desc

The following table includes a few examples:

Limit

When your query might return more results than you want to display to the user at once, you can use the limit parameter with cursors or API methods to manage the display of results. By default, query results are limited to 10 at a time. You can adjust this by setting the limit parameter to a value you prefer.

For example, you might execute a query that could potentially return hundreds of results, but you want to display 20 of those at a time to users. To do this, your code sets the limit parameter to 20 when querying for data, then provides a way for the user to request more of the results when they're ready.

You would use the following parameters in your query:

For example:

Select all users whose name starts with fred, and returns the first 50 results:

/users?ql=select * where name = 'fred*'&limit=50

Cursor

Retrieve the next batch of users whose name is “fred”, passing the cursor received from the last request to specify where the next set of results should begin:

/users?ql=select * where name = 'fred*'&limit=50&cursor=LTIxNDg0NDUxNDpVdjb0JwREVlS1VCd0xvR3NWT0JRQQ