문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/ / /

orderby

이 페이지의 내용

  • 행동
$orderby

참고

v3.2부터 지원이 중단되었습니다

v3 부터 시작합니다.2, $orderby 연산자는 mongosh 에서 더 이상 사용되지 않습니다. mongosh 에서는 cursor.sort() 를 대신 사용하세요.

$orderby 연산자는 쿼리 결과를 오름차순 또는 내림차순으로 정렬합니다.

mongoshcursor.sort() 메서드를 제공합니다.

db.collection.find().sort( { age: -1 } )

다음 형식 중 하나로 옵션을 지정할 수도 있습니다.

db.collection.find()._addSpecial( "$orderby", { age : -1 } )
db.collection.find( { $query: {}, $orderby: { age : -1 } } )

이 예제에서는 이름이 collection 인 collection의 모든 문서를 age 필드를 기준으로 내림차순으로 정렬하여 반환합니다. 내림차순으로 정렬하려면 음수 값(예: 위와 -1)의 $orderby 를 지정하고, 오름차순으로 정렬하려면 양수 값(예: 1)을 지정합니다.

인덱스에는 정렬된 기록이 포함되므로 MongoDB는 정렬 필드를 포함하는 인덱스에서 정렬 결과를 얻을 수 있습니다. MongoDB 정렬이 쿼리 술어와 동일한 인덱스를 사용하는 경우 정렬 작업을 지원하기 위해 여러 인덱스를 사용할 수 있습니다.

MongoDB가 인덱스 또는 인덱스를 사용하여 정렬을 순서대로 가져올 수 없는 경우, MongoDB는 데이터에 대해 블로킹 정렬 작업을 수행해야 합니다. 블로킹 정렬은 MongoDB가 정렬에 대한 모든 입력 문서를 소비하고 처리해야 함을 나타냅니다.블로킹 정렬은 컬렉션이나 데이터베이스에서 동시 작업을 차단하지 않습니다.

인덱스를 사용하는 정렬 작업은 블로킹 정렬보다 성능이 더 좋은 경우가 많습니다. 정렬 작업을 지원하는 인덱스를 만드는 방법에 대한 자세한 내용은 인덱스를 사용하여 쿼리 결과 정렬을 참조하세요.

블로킹 정렬 작업에 100메가바이트 이상의 시스템 메모리를 사용해야 하는 경우 쿼리에서 cursor.allowDiskUse()(MongoDB 4.4에 새로 추가됨)를 지정하지 않으면 MongoDB는 오류를 반환합니다. allowDiskUse()는 MongoDB가 블로킹 정렬 작업을 처리하는 동안 디스크의 임시 파일을 사용하여 100메가바이트 시스템 메모리 제한을 초과하는 데이터를 저장할 수 있도록 허용합니다.

이 오류를 방지하려면 정렬 작업을 지원하는 인덱스를 생성하거나 $orderbycursor.maxTimeMS() 및/또는 cursor.limit() 와 함께 사용합니다. cursor.limit() 는 최적화된 알고리즘을 통해 속도를 높이고 이 쿼리를 반환하는 데 필요한 메모리 양을 줄입니다. 지정된 제한으로 인해 문서 수가 100 메가바이트 제한 내에 속해야 합니다.

돌아가기

$min

다음

쿼리

이 페이지의 내용