다음을 통해 공유


ORDER BY(NoSQL 쿼리)

적용 대상: NoSQL

선택적인 ORDER BY 절은 쿼리에서 반환된 결과의 정렬 순서를 지정합니다.

구문

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

인수

설명
<sort_specification> 쿼리 결과 집합을 정렬할 속성이나 식을 지정합니다. 정렬 열은 이름 또는 속성 별칭으로 지정할 수 있습니다. 여러 속성을 지정할 수 있습니다. 속성 이름은 고유해야 합니다. ORDER BY 절에서 열 속성의 순서가 정렬된 결과 집합의 구성 방식을 정의합니다. 즉 결과 집합이 첫 번째 속성으로 정렬된 다음 정렬된 해당 목록이 두 번째 속성으로 정렬되는 등등입니다. ORDER BY 절에서 참조되는 속성 이름은 선택 목록의 속성 또는 FROM 절에 지정된 컬렉션에 정의된 속성과 정확히 일치해야 합니다.
<sort_expression> 쿼리 결과 집합을 정렬할 하나 이상의 속성 또는 식을 지정합니다.
<scalar_expression> 계산할 값을 나타내는 식입니다.
ASC 또는 DESC 지정된 열의 값이 오름차순으로 정렬되는지 내림차순으로 정렬되는지를 지정합니다. ASC는 오름차순으로 정렬하고, DESC는 내림차순으로 정렬합니다. 이 인수를 지정하지 않으면 ASC(오름차순)가 기본 정렬 순서입니다. null 값은 가능한 가장 작은 값으로 취급됩니다.

참고 항목

스칼라 식에 대한 자세한 내용은 스칼라 식을 참조하세요.

예제

이 섹션의 예제에서는 이 참조 항목 집합이 사용됩니다. 각 항목에는 firstlast 하위 속성이 있는 name 속성이 포함됩니다.

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

이 첫 번째 예제에서는 ORDER BY 절을 사용하여 필드를 기본 정렬 순서(오름차순)로 정렬합니다.

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

이 예제에서는 정렬 순서가 내림차순으로 명시적으로 지정됩니다.

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

이 마지막 예제에서 항목은 명시적으로 지정된 순서를 사용하여 특정 순서로 두 필드를 사용하여 정렬됩니다. 둘 이상의 필드를 사용하여 정렬하는 쿼리에는 복합 인덱스가 필요합니다.

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

설명

  • ORDER BY를 사용한 쿼리는 ORDER BY 절의 속성이 정의되지 않은 항목을 포함하여 모든 항목을 반환합니다. 일반적으로 결과에 다른 undefined 형식이 표시되는 순서는 제어할 수 없습니다. 정의되지 않은 값의 정렬 순서를 제어하려면 임의의 값을 undefined 속성에 할당하여 정의된 값 앞이나 뒤를 정렬합니다.
  • ORDER BY 절을 사용하려면 인덱싱 정책에 정렬되는 필드에 대한 인덱스가 포함되어야 합니다. 쿼리 런타임은 속성 이름 또는 계산된 속성에 대한 정렬을 지원합니다. 런타임은 여러 ORDER BY 속성도 지원합니다. 여러 ORDER BY 속성이 있는 쿼리를 실행하려면 정렬되는 필드에 복합 인덱스를 정의합니다.
  • 정렬되는 속성이 일부 항목에 대해 undefined되고 이를 ORDER BY 쿼리에서 검색하려면 인덱스에 이 경로를 명시적으로 포함해야 합니다. 기본 인덱싱 정책은 정렬 속성이 undefined된 항목의 검색을 허용하지 않습니다.