정의
그룹 내 최소 n 값을 반환합니다. 그룹 n개 미만의 요소가 포함된 경우 $minN는 그룹 의 모든 요소를 반환합니다.
참고
명확화
이 페이지에서는 축적자 사용되는 $minN 에 대해 설명합니다. 축적자는 입력 문서 그룹 에서 합계, 최대값, 최소값과 같은 애그리게이션된 값을 반환합니다.
다음과 같은 다른 컨텍스트에서도 $minN를 사용할 수 있습니다.
$minN (expression)는n의 최소값을 배열 로 반환합니다.$minN (window function)는$setWindowFields단계에서 특정 창 문서에서 최소n값을 반환하는 데 사용됩니다.
구문
{ $minN: { input: <expression>, n: <expression> } }
필드 | 유형 | 설명 |
|---|---|---|
| 표현식 | 입력 값을 결정하기 위해 각 입력 문서 에 대해 평가된 표현식 입니다. 이러한 가장 작은 |
| 표현식 | 그룹 반환되는 최대 결과 수를 결정합니다. |
행동
결과 유형
$minN이(가) 서로 다른 유형의 값을 비교할 때 유형의 순서는 BSON 비교 순서를 따릅니다.
Null 및 누락된 값
$minN null 및 누락된 값을 필터링합니다.
그룹 에서 최소 n 값을 반환하는 다음 집계 고려하세요.
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", minimumThreeScores: { $minN: { input: "$score", n: 4 } } } } ] )
이 예시에서는
$documents플레이어 점수가 포함된 리터럴 문서를 생성합니다.$group은gameId기준으로 문서를 그룹화합니다. 이 예시에는gameId가 단 하나(G1)만 있습니다.PlayerD점수가 누락되었고PlayerE에 nullscore이(가) 있습니다. 이 값은 모두 무시됩니다.minimumThreeScores필드input : "$score"를 가진$minN로 지정되고 배열 로 반환됩니다.scores이 있는 3 문서만 있으므로$minN는n = 4임에도 불구하고 최소 3score필드를 반환합니다.
[ { _id: 'G1', minimumThreeScores: [ 1, 2, 3 ] } ]
$minN 및 $bottomN 축적자의 비교
$minN 축적자와 $bottomN 축적자는 모두 그룹 에서 n 값을 반환하지만, 반환할 값을 결정하는 방법이 다릅니다.
비교하려는 값이 반환하려는 값과 동일한 경우
$minN을 사용합니다.$minN은 입력을 직접 비교하여n개의 가장 작은 값을 선택합니다.출력과 별도로 정렬 순서를 정의하려는 경우
$bottomN를 사용합니다.$bottomN를 사용하면sortBy키를 지정하여 어떤 문서가 "하단" 및output표현식 사용하여 반환할 값을 제어합니다.
예시
이 페이지의 예제에서는 sample_mflix 데이터 세트의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB deployment 에 로드하는 방법에 대한 자세한 내용은 샘플 데이터 세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우 이 페이지의 예제를 실행 하려면 데이터베이스를 삭제하고 다시 만들어야 할 수 있습니다.
단일 장르에 대한 최소 3개의 등급 찾기
$minN 축적자 사용하여 단일 장르에서 가장 낮은 IMDb 평점 3개를 찾을 수 있습니다.
db.movies.aggregate( [ { $match: { genres: "Horror" } }, { $group: { _id: "Horror", minThreeRatings: { $minN: { input: "$imdb.rating", n: 3 } } } } ] )
예시 파이프라인:
여러 장르에서 최소 3개의 등급 찾기
$minN 축적자 사용하여 각 장르의 최소 n IMDb 평점을 찾을 수 있습니다.
db.movies.aggregate( [ { $unwind: "$genres" }, { $group: { _id: "$genres", minThreeRatings: { $minN: { input: "$imdb.rating", n: 3 } } } }, { $sort: { _id: 1 } }, { $limit: 5 } ] )
예시 파이프라인:
그룹 키를 기반으로 동적으로 n 설정
n의 값을 동적으로 할당할 수 있습니다. 이 예시 에서는 $cond 표현식 rated 필드 에 사용됩니다.
db.movies.aggregate( [ { $match: { rated: { $in: [ "G", "PG", "PG-13", "R" ] } } }, { $group: { _id: { "rated": "$rated" }, minMovies: { $minN: { input: "$imdb.rating", n: { $cond: { if: { $eq: [ "$rated", "R" ] }, then: 3, else: 1 } } } } } } ] )
예시 파이프라인:
평점이
G,PG,PG-13또는R인 영화를 필터링합니다.rated(콘텐츠 등급)별로 영화를 그룹화합니다.input: "$imdb.rating"을 사용하여$minN에 대한 입력을 지정합니다.$cond표현식 사용하여R등급 영화에 대해서는3개의 최소 항목을 반환하고 다른 모든 등급에 대해서는1개의 최소 항목을 반환합니다.
출력에서 R 평가는 3 항목을 반환하고, G, PG 및 PG-13 평가는 각각 1 항목을 반환합니다.