Compartilhar via


ORDENAR POR (consulta NoSQL)

APLICA-SE A: NoSQL

A cláusulaORDER BYopcional especifica a ordem de classificação dos resultados retomados pela consulta.

Sintaxe

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

Argumentos

Descrição
<sort_specification> Especifica uma propriedade ou expressão pela qual classificar o conjunto de resultados da consulta. Uma coluna de classificação pode ser especificada como um alias de nome ou alias de propriedade. Podem ser especificadas várias propriedades. Os nomes de propriedades devem ser exclusivos. A sequência das propriedades de classificação na ORDER BYcláusula define a organização do conjunto de resultados classificado. Ou seja, o conjunto de resultados é classificado pela primeira propriedade e, em seguida, essa lista ordenada é classificada pela segunda propriedade e assim por diante. Os nomes de propriedade referenciados na ORDER BY cláusula devem corresponder a uma propriedade na lista de seleção ou a uma propriedade definida em uma coleção especificada na FROM cláusula sem nenhuma ambiguidade.
<sort_expression> Estabelece uma ou mais propriedades ou expressões nas quais classificar o conjunto de resultados da consulta.
<scalar_expression> Expressão que representa o valor a ser calculado.
ASC ou DESC Define que os valores na coluna especificada devem ser classificados em ordem crescente ou decrescente. ASCclassificar do valor mais baixo para o valor mais alto. DESCclassificar do valor mais alto para o valor mais baixo. Se esse argumento não for especificado, ASC (crescente) será a ordem de classificação padrão. Os valores null são tratados como os valores mais baixos possíveis.

Observação

Para obter mais informações sobre expressões escalares, consulte expressões escalares

Exemplos

Para os exemplos nesta seção, esse conjunto de referência de itens será usado. Cada item contém uma propriedade name com subpropriedades first e 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"
  }
]

Neste primeiro exemplo, a cláusula ORDER BY é usada para classificar um campo pela ordem de classificação padrão, crescente.

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

No próximo exemplo, a ordem de classificação é explicitamente especificada como decrescente.

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

Nesse exemplo final, os itens são classificados usando dois campos, em uma ordem específica usando uma ordenação explicitamente especificada. Uma consulta que classifica usando dois ou mais campos exige um índice composto.

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

Comentários

  • As consultas com ORDER BY retornam todos os itens, inclusive os itens em que a propriedade na cláusula ORDER BY não está definida. Normalmente, você não pode controlar a ordem em que diferentes tipos undefined aparecem nos resultados. Para controlar a ordem de classificação de valores indefinidos, atribua a qualquer propriedade undefined um valor arbitrário para garantir que ela seja classificada antes ou depois dos valores definidos.
  • A cláusula ORDER BY exige que a política de indexação inclua um índice para os campos que estão sendo classificados. O tempo de execução da consulta suporta a classificação de acordo com um nome de propriedade ou propriedades computadas. O tempo de execução também suporta várias propriedades do ORDER BY. Para executar uma consulta com várias ORDER BY propriedades, defina um índice composto nos campos que estão sendo classificados.
  • Se as propriedades que estão sendo classificadas podem ser undefined para alguns itens e você deseja recuperá-las em uma consulta ORDER BY, é necessário incluir explicitamente esse caminho no índice. A política de indexação padrão não permite a recuperação dos itens nos quais a propriedade de classificação é undefined.