Compartir a través de


ORDER BY (consulta NoSQL)

SE APLICA A: NoSQL

La cláusula opcional ORDER BY especifica el criterio de ordenación para los resultados que devuelve la consulta.

Sintaxis

ORDER BY <sort_specification>  
<sort_specification> ::= <sort_expression> [, <sort_expression>]  
<sort_expression> ::= {<scalar_expression> [ASC | DESC]} [ ,...n ]

Argumentos

Descripción
<sort_specification> Especifica una propiedad o una expresión para ordenar el conjunto de resultados de la consulta. Se puede especificar una columna de ordenación como alias de nombre o de propiedad. Se pueden especificar varias propiedades. Los nombres de propiedad deben ser únicos. La secuencia de las propiedades de ordenación en la cláusula ORDER BY define la organización del conjunto de resultados ordenado. Es decir, el conjunto de resultados se ordena en función de la primera propiedad, esa lista ordenada se ordena en función de la segunda propiedad y así sucesivamente. Los nombres de propiedad indicados en la cláusula ORDER BY deben corresponderse con una propiedad de la lista seleccionada o con una que se defina en la colección que se especifique en la cláusula FROM sin ambigüedades.
<sort_expression> Especifica una o más propiedades o expresiones para ordenar el conjunto de resultados de la consulta.
<scalar_expression> Expresión que representa el valor que hay que calcular.
ASC o DESC Indica que los valores de la columna especificada se deben ordenar en sentido ascendente o descendente. ASC ordena del valor mínimo al valor máximo. DESC ordena del valor máximo al valor mínimo. Si no se especifica este argumento, ASC (ascendente) es el criterio de ordenación predeterminado. Los valores null se tratan como los valores más bajos posibles.

Nota

Para obtener más información sobre las expresiones escalares, consulte expresiones escalares

Ejemplos

Para los ejemplos de esta sección, se usa este conjunto de referencias de elementos. Cada elemento contiene una propiedad name con subpropiedades first y last.

[
  {
    "name": {
      "first": "Casey",
      "last": "Jensen"
    },
    "team": "Human resources"
  },
  {
    "name": {
      "first": "Amari",
      "last": "Rivera"
    },
    "team": "Human resources"
  },
  {
    "name": {
      "first": "Kayla",
      "last": "Lewis"
    },
    "team": "Human resources"
  }
]

En este primer ejemplo, la cláusula ORDER BY se usa para ordenar un campo por el criterio de ordenación predeterminado, ascendente.

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"
  }
]

En este ejemplo siguiente, el criterio de ordenación se especifica explícitamente para que sea descendente.

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"
  }
]

En este ejemplo final, los elementos se ordenan mediante dos campos, en un orden específico mediante la ordenación especificada explícitamente. Una consulta que ordena mediante el uso de dos o más campos requiere un índice compuesto.

SELECT VALUE {
    firstName: e.name.first,
    lastName: e.name.last
}
FROM
    employees e
ORDER BY
    e.name.last DESC,
    e.name.first ASC

Observaciones

  • Las consultas con ORDER BY devuelven todos los elementos, incluidos los elementos en los que la propiedad de la cláusula ORDER BY no está definida. Generalmente, no se puede controlar el orden en el que aparecen los distintos tipos de undefined en los resultados. Para controlar el criterio de ordenación de valores no definidos, asigne a cualquier propiedad undefined un valor arbitrario para asegurarse de que se ordenan antes o después de los valores definidos.
  • La cláusula ORDER BY exige que la directiva de indexación incluya un índice de los campos que se van a ordenar. El tiempo de ejecución de consulta admite la ordenación con un nombre de propiedad o propiedades calculadas. El entorno de ejecución también admite varias propiedades ORDER BY. Para ejecutar una consulta con varias propiedades ORDER BY, defina un índice compuesto en los campos que se ordenan.
  • Si las propiedades que se van a ordenar pueden ser undefined en algunos elementos y quiere recuperarlos en una consulta ORDER BY, debe incluir esta ruta de acceso de forma explícita en el índice. La directiva de indexación predeterminada no permite la recuperación de los elementos en los que la propiedad de ordenación es undefined.