정의
참고
$maxN의 다른 사용 사례
이 페이지에서는 표현식으로 사용될 때의 $maxN에 대해 설명합니다. 이 표현식은 배열에서 가장 큰 n 값을 반환합니다.
$maxN를 다른 다음 문맥에서도 사용할 수 있습니다:
$maxN (accumulator)는 그룹 내에서 최대n개 값을 반환합니다.$maxN (window function)는 특정 창에서 문서에서 가장 큰n값을 반환하는$setWindowFields단계에서 사용됩니다.
구문
{ $maxN: { n: <expression>, input: <expression> } }
필드 | 유형 | 설명 |
|---|---|---|
| 표현식 | 반환할 요소 수를 지정합니다. 양의 정수로 해석되어야 합니다. |
| 표현식 | 최대 |
행동
$maxNnull값을 필터링합니다.input배열에n개 미만의 요소가 포함된 경우,$maxN은 배열의 모든 요소를 반환합니다.input배열이 아닌 값으로 확인되면 작업에서 오류가 반환됩니다.input에 숫자 및 string 요소가 모두 포함된 경우, string 요소는 BSON 비교 순서에 따라 숫자 요소보다 먼저 정렬됩니다.
예시
이 페이지의 예시는 sample_mflix 데이터 세트의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB 배포서버에 로드하는 방법에 대한 자세한 내용은 샘플 데이터세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우, 이 페이지의 예시를 실행하려면 데이터베이스를 제거하고 다시 생성해야 할 수 있습니다.
다음 예시에서는 $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를 사용하여 특정 영화 3개를 필터링합니다.$addFields와$maxN을(를) 사용하여cast배열에서n: 2을 사용하여 알파베숫 순으로 마지막 두 값을 추출하여 포함하는 새 필드topTwoCast를 만듭니다.출력에
title,cast및topTwoCast필드만 포함하기 위해$project를 사용합니다.결과를 제목별로 정렬하기 위해
$sort를 사용합니다.