정의
참고
$maxN의 다른 용도
이 페이지에서는 배열 에서 가장 큰 n 값을 반환하는 표현식 으로 사용되는 $maxN에 대해 설명합니다.
다음과 같은 다른 컨텍스트에서도 $maxN를 사용할 수 있습니다.
$maxN (accumulator)는 그룹 내 최대n값을 반환합니다.$maxN (window function)는$setWindowFields단계에서 특정 창 문서에서 가장 큰n값을 반환하는 데 사용됩니다.
구문
{ $maxN: { n: <expression>, input: <expression> } }
필드 | 유형 | 설명 |
|---|---|---|
| 표현식 | 반환할 요소의 수를 지정합니다. 양의 정수로 해석되어야 합니다. |
| 표현식 | 최대 |
행동
$maxNnull값을 필터링합니다.input배열n보다 적은 수의 요소가 포함된 경우$maxN는 배열 의 모든 요소를 반환합니다.input가 배열이 아닌 값으로 해석되면 연산은 오류를 반환합니다.input에 숫자와 문자열 요소가 모두 포함된 경우, 문자열 요소는 BSON 비교 순서에 따라 숫자 요소보다 먼저 정렬됩니다.
예시
이 페이지의 예제에서는 sample_mflix 데이터 세트의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB deployment 에 로드하는 방법에 대한 자세한 내용은 샘플 데이터 세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우 이 페이지의 예제를 실행 하려면 데이터베이스를 삭제하고 다시 만들어야 할 수 있습니다.
다음 예시 $maxN을 사용하여 $addFields가 생성한 새 topTwoCast 필드 에 저장된 각 영화의 알파벳순으로 마지막 출연진 두 명을 반환합니다.
db.movies.aggregate( [ { $match: { title: { $in: [ "The Godfather", "Spirited Away", "The Dark Knight" ] } } }, { $addFields: { topTwoCast: { $maxN: { n: 2, input: "$cast" } } } }, { $project: { _id: 0, title: 1, cast: 1, topTwoCast: 1 } }, { $sort: { title: 1 } } ] )
이전 파이프라인:
$match를 사용하여 세 개의 특정 영화를 필터하다 합니다.$addFields를$maxN와 함께 사용하여n: 2이 있는cast배열 에서 알파벳순으로 마지막 값 두 개를 포함하는 새 필드topTwoCast를 생성합니다.$project를 사용하여 출력에title,cast및topTwoCast필드만 포함합니다.$sort를 사용하여 제목별로 결과를 정렬합니다.