AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

$maxN (축적자 연산자)

$maxN

그룹 내 최댓값 n개 요소의 집계를 반환합니다. 그룹에 n개 미만의 요소가 포함된 경우 $maxN은 그룹의 모든 요소를 반환합니다.

$maxN 축적자 다음 단계에서 사용할 수 있습니다.

참고

$maxN의 다른 용도

이 페이지에서는 축적자 사용되는 $maxN 에 대해 설명합니다. 축적자는 입력 문서 그룹 에서 합계, 최대값, 최소값과 같은 애그리게이션된 값을 반환합니다.

다음과 같은 다른 컨텍스트에서도 $maxN를 사용할 수 있습니다.

{
$maxN:
{
input: <expression>,
n: <expression>
}
}
필드
유형
설명

input

표현식

그룹 의 각 요소에 대해 평가된 표현식 . $maxN은 최대 n 값을 유지합니다.

n

표현식

$maxN가 그룹 에서 반환하는 요소의 수입니다. n을 동적으로 설정하는 예시 는 그룹 키를 기반으로 n 설정을 참조하세요.

$maxN이(가) 서로 다른 유형의 값을 비교할 때 유형의 순서는 BSON 비교 순서를 따릅니다.

$maxN null 및 누락된 값을 필터링합니다.

다음 집계 $maxN이 null 및 누락된 값을 처리하는 방법을 보여줍니다.

db.aggregate( [
{
$documents: [
{ title: "Fight Club", genre: "Drama", rating: 8.9 },
{ title: "The Matrix", genre: "Drama", rating: 8.7 },
{ title: "The Green Mile", genre: "Drama", rating: 8.5 },
{ title: "Magnolia", genre: "Drama" },
{ title: "Dogma", genre: "Drama", rating: null }
]
},
{
$group: {
_id: "$genre",
topFourRatings: {
$maxN: {
input: "$rating",
n: 4
}
}
}
}
] )
[
{
_id: 'Drama',
topFourRatings: [ 8.9, 8.7, 8.5 ]
}
]

이 예시에서는

  • $documents 영화 등급이 포함된 리터럴 문서를 만듭니다.

  • $group은 genre 기준으로 문서를 그룹화합니다. 이 예시에는 genre가 단 하나(Drama)만 있습니다.

  • Magnolia 누락된 rating이(가) 있고 Dogma에 null rating이(가) 있습니다. 두 값 모두 필터링됩니다.

  • 3 문서에만 유효한 등급이 있으므로, $maxN는 n = 4이더라도 3 값을 반환합니다.

$maxN 또는 $topN를 사용하여 그룹 에서 가장 순위가 높은 n 요소를 반환할 수 있습니다. 둘 사이의 선택은 입력 문서가 이미 정렬되어 있는지 여부에 따라 달라집니다.

  • 입력 문서가 이미 정렬된 경우 $maxN를 사용하여 최대 n 값을 반환합니다.

  • 상위 n 요소를 동시에 정렬하고 선택해야 하는 경우 $topN를 사용하여 단일 축적자 이 두 가지를 모두 수행할 수 있습니다.

이 페이지의 예제에서는 sample_mflix 데이터 세트의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB deployment 에 로드하는 방법에 대한 자세한 내용은 샘플 데이터 세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우 이 페이지의 예제를 실행 하려면 데이터베이스를 삭제하고 다시 만들어야 할 수 있습니다.

$maxN 축적자 사용하여 한 해 동안 개봉한 영화에 대한 가장 높은 IMDb 등급 3개를 찾을 수 있습니다.

db.movies.aggregate( [
{
$match: {
year: 1999,
"imdb.rating": { $exists: true }
}
},
{
$group: {
_id: 1999,
topThreeRatings: {
$maxN: {
input: "$imdb.rating",
n: 3
}
}
}
}
] )

이전 파이프라인:

  • $match를 사용하여 imdb.rating 필드 있는 1999에서 개봉한 영화를 필터하다 합니다.

  • 일치하는 모든 문서를 _id: 1999을(를) 사용하여 단일 그룹 으로 그룹화합니다.

  • "$imdb.rating"을 $maxN의 input로 지정합니다.

  • $maxN를 사용하여 n: 3이 있는 가장 높은 평점 3개를 반환합니다.

$maxN 축적자 사용하여 설정하다 별로 각 연도별 최고 평점 영화 3편을 찾을 수 있습니다.

db.movies.aggregate( [
{
$match: {
year: { $in: [ 1999, 2000, 2001 ] },
"imdb.rating": { $exists: true }
}
},
{
$group: {
_id: "$year",
topThreeRatings: {
$maxN: {
input: "$imdb.rating",
n: 3
}
}
}
},
{ $sort: { _id: 1 } }
] )

이전 파이프라인:

  • $match를 사용하여 imdb.rating 필드 있는 1999, 2000 또는 2001에서 개봉된 영화를 필터하다 합니다.

  • $group를 사용하여 year별로 영화를 그룹 합니다.

  • "$imdb.rating"을 $maxN의 input로 지정합니다.

  • $maxN를 사용하여 n: 3로 연간 가장 높은 평점 3개를 반환합니다.

  • 결과를 연도별로 오름차순으로 정렬합니다.

그룹 키를 기반으로 n 값을 동적으로 할당할 수 있습니다. 이 예시 에서 $cond 표현식 year 필드 사용하여 n 값을 변경합니다.

db.movies.aggregate( [
{
$match: {
year: { $in: [ 1999, 2000, 2001 ] },
"imdb.rating": { $exists: true }
}
},
{
$group: {
_id: { year: "$year" },
topRatedMovies: {
$maxN: {
input: "$imdb.rating",
n: { $cond: {
if: { $eq: [ "$year", 2001 ] },
then: 3,
else: 1
} }
}
}
}
},
{ $sort: { "_id.year": 1 } }
] )

이전 파이프라인:

  • 1999, 2000 또는 2001에서 개봉되었으며 imdb.rating 필드 있는 영화에 대한 필터입니다.

  • 영화를 year별로 그룹화합니다.

  • $cond 표현식 사용하여 2001 연도에 대한 3 등급을 반환하고 다른 모든 연도에 대해서는 1 등급을 반환합니다.

출력에서 2001은 3개의 평가를 반환하고 1999 및 2000는 각각 1개의 평가를 반환합니다.

이 페이지 평가하기