정의
$topN버전 8.3에 추가 되었습니다.
지정된 정렬 순서에 따라 배열 의 상위
n개 요소를 반환합니다. 배열n개 미만의 요소가 포함된 경우$topN는 배열 의 모든 요소를 반환합니다.
참고
$topN의 기타 용도
이 페이지에서는 $topN 배열 값에 대해 작동하는 표현식 으로 사용되는 경우에 대해 설명합니다.
다음과 같은 다른 컨텍스트에서도 $topN를 사용할 수 있습니다.
$topN (accumulator)는 지정된 정렬 순서에 따라 그룹 내 상위n요소를 반환합니다.$topN (window function)는$setWindowFields단계에서 특정 창 문서에서 상위n요소를 반환하는 데 사용됩니다.
구문
표현식 연산자 로 사용되는 경우 $topN 의 구문은 다음과 같습니다.
{ $topN: { n: <expression>, sortBy: <expression>, input: <expression> } }
필드 | 필요성 | 설명 |
|---|---|---|
n | 필수 사항 | 반환할 배열 요소의 수입니다. |
sortBy | 필수 사항 | 결과의 순서를 지정합니다. |
입력 | 필수 사항 |
|
행동
Null 및 누락된 값
$topNnull 값을 필터링하지 않습니다.$topN누락된 값을 null로 변환합니다.
정렬 동작
MongoDB sortBy 값을 기준으로 input 배열 정렬합니다. 다음 표에는 다양한 정렬 옵션의 예가 나와 있습니다.
input | sortBy | 정렬됨 input | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| | ||||||||||
|
| | ||||||||||
|
| |
Input Values
input 필드 배열 로 해석되어야 합니다. 배열 아닌 input을 지정하면 MongoDB 오류를 반환합니다.
예시
다음 예시에서는 sample_mflix 샘플 데이터 집합의 movies 컬렉션을 사용합니다. 배포서버에 이 데이터세트를 로드하는 방법은 샘플 데이터세트 로드를 참조하세요.
movies 컬렉션 에는 다음 예시 와 유사한 문서가 포함되어 있습니다.
{ _id: ObjectId('573a1396f29313caabce4a9a'), year: 1972, genres: [ 'Crime', 'Drama' ], title: 'The Godfather', cast: [ 'Marlon Brando', 'Al Pacino', 'James Caan', 'Richard S. Castellano' ], directors: [ 'Francis Ford Coppola' ], runtime: 175, ... }
다음 집계 파이프라인 cast 배열 에서 $topN 을(를) 사용합니다.
db.movies.aggregate([ { $match: { title: "The Godfather" } }, { $project: { _id: 0, title: 1, firstThreeCastMembersAlphabetically: { $topN: { n: 3, sortBy: 1, input: "$cast" } } } } ])
[ { title: 'The Godfather', firstThreeCastMembersAlphabetically: [ 'Al Pacino', 'James Caan', 'Marlon Brando' ] } ]
이 예시 에서 $topN 은 기존 cast 배열 알파벳 오름차순으로 정렬하고 처음 세 값을 반환합니다.