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

bottom (축적자 연산자)

$bottom

지정된 정렬 순서에 따라 그룹 내 하위 요소를 반환합니다.

다음 단계에서 사용할 수 있습니다.

참고

명확화

이 페이지에서는 축적자 사용되는 $bottom 에 대해 설명합니다. 축적자는 입력 문서 그룹 에서 애그리게이션된 단일 값을 반환합니다.

$setWindowFields 단계에서 $bottom (window function)를 사용하여 특정 창 문서에서 맨 아래 요소를 반환할 수도 있습니다.

{
$bottom:
{
sortBy: { <field1>: <sort order>, <field2>: <sort order> ... },
output: <expression>
}
}
필드
필요성
설명

sortBy

필수 사항

$sort와 유사한 구문을 사용하여 각 그룹 내 요소의 순위 지정 순서를 정의합니다. 파이프라인 출력의 문서 순서에는 영향을 주지 않습니다.

출력

필수 사항

그룹의 각 요소에 대한 출력을 나타내며 모든 표현식이 될 수 있습니다.

$bottom null 값을 필터하다 하지 않으며, $bottom은 누락된 값을 null로 변환합니다.

점수 그룹에서 최하위 문서를 반환하는 다음과 같은 집계를 고려해 보세요.

db.aggregate( [
{
$documents: [
{ playerId: "PlayerA", gameId: "G1", score: 1 },
{ playerId: "PlayerB", gameId: "G1", score: 2 },
{ playerId: "PlayerC", gameId: "G1", score: 3 },
{ playerId: "PlayerD", gameId: "G1"},
{ playerId: "PlayerE", gameId: "G1", score: null }
]
},
{
$group:
{
_id: "$gameId",
playerId:
{
$bottom:
{
output: [ "$playerId", "$score" ],
sortBy: { "score": -1 }
}
}
}
}
] )
[
{
_id: 'G1',
playerId: [ 'PlayerD', null ]
}
]

이 예시에서는

  • $documents 플레이어 점수가 포함된 리터럴 문서를 생성합니다.

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

  • PlayerD 점수가 누락되었고 PlayerE에 null score가 있습니다. 이 값은 모두 null로 간주됩니다.

  • playerId 및 score 필드는 output : ["$playerId"," $score"]로 지정되고 배열 값으로 반환됩니다.

  • sortBy: { "score": -1 }로 순위 순서를 지정합니다.

  • PlayerD 및 PlayerE 이(가) 최하위 요소로 동점입니다. PlayerD 은 하위 score 로 반환됩니다.

$bottom을 호출하는 집계 파이프라인에는 100MB 제한이 적용됩니다. 개별 그룹에 대해 이 제한을 초과하면 오류가 발생하면서 집계가 실패합니다.

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

$bottom 축적자 사용하여 단일 장르에서 평점이 가장 낮은 영화를 찾을 수 있습니다.

db.movies.aggregate( [
{
$match : { genres: "Comedy" }
},
{
$group:
{
_id: "Comedy",
lowestRatedMovie:
{
$bottom:
{
output: [ "$title", "$imdb.rating" ],
sortBy: { "imdb.rating": -1 }
}
}
}
}
] )

예시 파이프라인:

  • $match를 사용하여 단일 장르에 대한 결과를 필터하다 . 이 경우 Comedy입니다.

  • $group를 사용하여 모든 희극 영화를 단일 "Comedy" 그룹 키 아래에 그룹 합니다.

  • output : ["$title", "$imdb.rating"]을 사용하여 $bottom에 출력되는 필드를 지정합니다.

  • sortBy: { "imdb.rating": -1 }를 사용하여 각 그룹 의 맨 아래 요소를 평점이 가장 낮은 요소로 정의합니다.

  • $bottom를 사용하여 해당 장르에서 가장 낮은 평점을 받은 영화를 반환합니다.

$bottom 축적자 사용하여 연도별 최저 평점 영화를 찾을 수 있습니다.

db.movies.aggregate( [
{
$match: {
"imdb.rating": { $exists: true },
year: { $gte: 2010, $lte: 2012 }
}
},
{
$group:
{
_id: "$year",
lowestRatedMovie:
{
$bottom:
{
output: [ "$title", "$imdb.rating" ],
sortBy: { "imdb.rating": -1 }
}
}
}
},
{
$sort: { _id: 1 }
}
] )

예시 파이프라인:

  • $match를 사용하여 IMDb 등급이 있는 2010~2012의 영화를 필터하다 합니다.

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

  • $bottom를 사용하여 매년 가장 낮은 평점을 받은 영화를 반환합니다.

  • output : ["$title", "$imdb.rating"]을 사용하여 $bottom에 출력되는 필드를 지정합니다.

  • sortBy: { "imdb.rating": -1 }를 사용하여 각 그룹 의 맨 아래 요소를 평점이 가장 낮은 요소로 정의합니다.

  • $sort를 사용하여 연도별로 결과를 오름차순으로 정렬합니다.

이 페이지 평가하기