ORDER BY (NoSQL query)
APPLIES TO: NoSQL
The optional ORDER BY
clause specifies the sorting order for results returned by the query.
Syntax
ORDER BY <sort_specification>
<sort_specification> ::= <sort_expression> [, <sort_expression>]
<sort_expression> ::= {<scalar_expression> [ASC | DESC]} [ ,...n ]
Arguments
Description | |
---|---|
<sort_specification> |
Specifies a property or expression on which to sort the query result set. A sort column can be specified as a name or property alias. Multiple properties can be specified. Property names must be unique. The sequence of the sort properties in the ORDER BY clause defines the organization of the sorted result set. That is, the result set is sorted by the first property and then that ordered list is sorted by the second property, and so on. The property names referenced in the ORDER BY clause must correspond to either a property in the select list or to a property defined in the collection specified in the FROM clause without any ambiguities. |
<sort_expression> |
Specifies one or more properties or expressions on which to sort the query result set. |
<scalar_expression> |
Expression representing the value to be computed. |
ASC or DESC |
Specifies that the values in the specified column should be sorted in ascending or descending order. ASC sorts from the lowest value to highest value. DESC sorts from highest value to lowest value. If this argument isn't specified, ASC (ascending) is the default sort order. null values are treated as the lowest possible values. |
Note
For more information on scalar expressions, see scalar expressions
Examples
For the examples in this section, this reference set of items is used. Each item contains a name
property with first
and last
subproperties.
[
{
"name": {
"first": "Casey",
"last": "Jensen"
},
"team": "Human resources"
},
{
"name": {
"first": "Amari",
"last": "Rivera"
},
"team": "Human resources"
},
{
"name": {
"first": "Kayla",
"last": "Lewis"
},
"team": "Human resources"
}
]
In this first example, the ORDER BY
clause is used to sort a field by the default sort order, ascending.
SELECT VALUE {
firstName: e.name.first,
lastName: e.name.last
}
FROM
employees e
ORDER BY
e.name.last
[
{
"firstName": "Casey",
"lastName": "Jensen"
},
{
"firstName": "Kayla",
"lastName": "Lewis"
},
{
"firstName": "Amari",
"lastName": "Rivera"
}
]
In this next example, the sort order is explicitly specified to be descending.
SELECT VALUE {
firstName: e.name.first,
lastName: e.name.last
}
FROM
employees e
ORDER BY
e.name.last DESC
[
{
"firstName": "Amari",
"lastName": "Rivera"
},
{
"firstName": "Kayla",
"lastName": "Lewis"
},
{
"firstName": "Casey",
"lastName": "Jensen"
}
]
In this final example, the items are sorted using two fields, in a specific order using explicitly specified ordering. A query that sorts using two or more fields requires a composite index.
SELECT VALUE {
firstName: e.name.first,
lastName: e.name.last
}
FROM
employees e
ORDER BY
e.name.last DESC,
e.name.first ASC
Remarks
- Queries with
ORDER BY
return all items, including items where the property in the ORDER BY clause isn't defined. Typically, you can't control the order that differentundefined
types appear in the results. To control the sort order of undefined values, assign anyundefined
properties an arbitrary value to ensure they sort either before or after the defined values. - The
ORDER BY
clause requires that the indexing policy includes an index for the fields being sorted. The query runtime supports sorting against a property name or computed properties. The runtime also supports multipleORDER BY
properties. In order to run a query with multipleORDER BY
properties, define a composite index on the fields being sorted. - If the properties being sorted might be
undefined
for some items and you want to retrieve them in anORDER BY
query, you must explicitly include this path in the index. The default indexing policy doesn't allow for the retrieval of the items where the sort property isundefined
.