Query operators & data types

The following operators and data types are supported by the SQL-like query language in Usergrid.

Operators

.. raw:: html

Operator

.. raw:: html

Purpose

.. raw:: html

Example

.. raw:: html

‘<‘ or ‘lt’

.. raw:: html

Less than

.. raw:: html

select * where quantity > ‘1000’

.. raw:: html

‘<=’ or ‘lte’

.. raw:: html

Less than or equal to

.. raw:: html

Example

.. raw:: html

‘=’ or ‘eq’

.. raw:: html

Equals

.. raw:: html

select * where price = ‘20.00’

.. raw:: html

‘>=’ or ‘gte’

.. raw:: html

Greater than or equal to

.. raw:: html

select * where quantity >= ‘1000’

.. raw:: html

‘>’ or ‘gt’

.. raw:: html

Greater than

.. raw:: html

select * where quantity > ‘1000’

.. raw:: html

not

.. raw:: html

Subtraction of results

.. raw:: html

select * where quantity < ‘4000’ and not quantity = ‘2000’

.. raw:: html

and

.. raw:: html

Union of results

.. raw:: html

select * where quantity > ‘1000’ and quantity < ‘4000’

.. raw:: html

or

.. raw:: html

Intersection of results

.. raw:: html

select * where quantity = ‘1000’ or quantity = ‘4000’

.. raw:: html

contains

.. raw:: html

Narrow by contained text

.. raw:: html

select * where title contains ‘tale’

.. raw:: html

Data types

As you develop queries, remember that entity properties each conform to a particular data type. For example, in the default entity User, the name property is stored as a string, the created date as a long, and metadata is stored as a JSON object. Your queries must be data type-aware to ensure that query results are as you expect them to be.

For example, if you create an entity with a price property with a value of 100.00, querying for 100 will return no results, since the API expected a decimal-delimited float value in your query.

For a list of property data types for each default entities, see Default Data Entity Types.

.. raw:: html

string

.. raw:: html

'value', unicode '\uFFFF', octal '\0707'

long

.. raw:: html

1357412326021

Timestamps are typically stored as long values.

.. raw:: html

float

.. raw:: html

10.1, -10.1, 10e10, 10e-10, 10E10, 10E-10

Your query must be specific about the value you’re looking for, down to the value (if any) after the decimal point.

.. raw:: html

boolean

.. raw:: html

true | false

UUID

.. raw:: html

ee912c4b-5769-11e2-924d-02e81ac5a17b

Array

.. raw:: html

["boat", "car", "bike"]

object

.. raw:: html

For a JSON object like this one:

.. raw:: html

                   {
                    "items": [
                     {
                      "name": "rocks"
                     },
                     {
                      "name": "boats"
                     }
                    ]
                   }
               

you can use dot notation to reach property values in the object:

.. raw:: html

                    /mycollection/thing?ql="select * where items.name = 'rocks'"
               

Objects are often used to contain entity metadata, such as the activities associated with a user, the users associated with a role, and so on.

.. raw:: html

Please note that object properties are not indexed. This means queries using dot-notation will be much slower than queries on indexed entity properties.

.. raw:: html