AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

$firstN (축적자 연산자)

$firstN

그룹 내 첫 n 개 요소의 집계를 반환합니다. 그룹 단계의 입력 데이터에 정의된 정렬 순서가 있는 경우에만 결과에 의미가 있습니다. 그룹에 n 개 미만의 요소가 포함된 경우 $firstN은 그룹의 모든 요소를 반환합니다.

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

참고

명확화

이 페이지에서는 $firstN을 축적자로 사용할 때에 대해 설명합니다. 축적자는 입력 문서 그룹 전체에 걸쳐 합계, 최댕값 또는 최소값과 같은 단일 집계 값을 반환합니다.

$firstN를 다른 다음 문맥에서도 사용할 수 있습니다:

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

input

표현식

입력 그룹의 각 문서를 대상으로 input 표현식이 평가되고, 처음 n 개의 결과가 유지됩니다.

n

표현식

The number of elements that $firstN returns from the group. For an example of setting n dynamically based on the group key, see Set n Based on the Group Key.

  • $firstN null 값을 필터링하지 않습니다.

  • $firstN 누락된 값을 null로 변환합니다.

$firstN 축적자와 $topN 축적자는 모두 비슷한 결과를 달성할 수 있습니다.

일반적으로 다음과 같습니다.

  • $group 에 들어오는 문서가 이미 주문된 경우 $firstN 을 사용해야 합니다.

  • 상위 n 요소를 정렬하고 선택하는 경우 $topN을 사용하여 하나의 축적자로 두 작업을 모두 수행할 수 있습니다.

The examples on this page use the movies collection in the sample_mflix sample dataset. To learn how to load the sample dataset into your MongoDB deployment, see Import Sample Data Into Your Atlas Deployment.

$firstN 축적자를 사용하여 한 장르에서 처음 세 개의 영화를 찾을 수 있습니다.

db.movies.aggregate( [
{
$match: { genres: "Horror" }
},
{
$sort: { year: 1 }
},
{
$group:
{
_id: "Horror",
firstThreeMovies:
{
$firstN:
{
input: [ "$title", "$year" ],
n: 3
}
}
}
}
] )

이전 파이프라인:

  • $match를 사용하여 Horror이 genres 배열에 포함된 영화로 결과를 필터합니다.

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

  • 모든 결과 문서를 단일 그룹으로 그룹합니다.

  • input : ["$title", "$year"] 을 사용하여 $firstN 에 입력되는 필드를 지정합니다.

  • $firstN을 사용하여 n: 3으로 Horror 장르에 대한 처음 세 개의 문서를 반환합니다.

$firstN 축적자를 사용하여 각 장르에서 처음 n 개의 입력 필드를 찾을 수 있습니다.

db.movies.aggregate( [
{
$unwind: "$genres"
},
{
$sort: { year: 1 }
},
{
$group:
{
_id: "$genres",
movies:
{
$firstN:
{
input: [ "$title", "$year" ],
n: 3
}
}
}
},
{ $sort: { _id: 1 } },
{ $limit: 5 }
] )

이전 파이프라인:

  • genres 배열에서 $unwind를 사용하여 각 장르별 별도 문서를 만들억니다.

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

  • $group을 사용하여 genres를 기준으로 결과를 그룹화합니다.

  • $firstN을 사용하여 n: 3인 각 장르에 대해 처음 세 개의 문서를 반환합니다.

  • input : ["$title", "$year"] 을 사용하여 $firstN 에 입력되는 필드를 지정합니다.

  • 독자성을 향상시키기 위해 출력을 5개 문서로 제한합니다.

그룹 키에 따라 n의 값을 동적으로 할당할 수 있습니다. 이 예시에서, $cond 표현식은 rated 필드를 사용하여 n의 값을 변경합니다:

db.movies.aggregate([
{ $match: { rated: { $in: ["G", "PG", "PG-13", "R"] } } },
{ $sort: { title: 1 } },
{
$group:
{
_id: {"rated": "$rated"},
movies:
{
$firstN:
{
input: "$title",
n: { $cond: { if: { $eq: ["$rated", "PG"] }, then: 3, else: 1 } }
}
}
}
}
] )

이전 파이프라인:

  • G, PG, PG-13, R 평점을 가진 영화에 대한 필터.

  • 결과를 title을(를) 기준으로 알파베숫순으로 정렬합니다.

  • 영화를 rated (영화 평점)로 분류합니다.

  • $cond 표현식을 사용하여 PG등급 영화에 대해 3 개의 영화를 반환하고 모든 다른 등급에 대해 1 개의 영화를 반환합니다.

출력에서 PG 평점은 3 개의 영화를 반환하고, G, PG-13, R 평점은 각각 1 개의 영화를 반환합니다.

이 페이지 평가하기