정의
버전 5.2에 추가되었습니다.
배열에서 가장 작은 값 n개를 반환합니다.
구문
$minN 의 구문은 다음과 같습니다:
{ $minN: { n: <expression>, input: <expression> } }
행동
1보다 작은n값은 지정할 수 없습니다.$minN은input배열에서 찾은null값을 필터링합니다.지정된
n이input배열의 요소 수보다 크거나 같으면$minN은input배열의 모든 요소를 반환합니다.input배열이 아닌 값으로 확인되면 집계 작업 오류가 발생합니다.input에 숫자와 문자열 요소가 모두 포함된 경우 숫자 요소는 BSON 비교 순서에 따라 문자열 요소보다 먼저 정렬됩니다.
예시
다음 문서로 scores 컬렉션을 생성합니다.
db.scores.insertMany([ { "playerId" : 1, "score" : [ 1, 2, 3 ] }, { "playerId" : 2, "score" : [ 12, 90, 7, 89, 8 ] }, { "playerId" : 3, "score" : [ null ] }, { "playerId" : 4, "score" : [ ] }, { "playerId" : 5, "score" : [ 1293, "2", 3489, 9 ]} ])
다음 예제에서는 $minN 연산자를 사용하여 각 플레이어의 가장 낮은 점수 두 개를 검색합니다. 가장 낮은 점수는$addFields 에서 만든 새 필드 minScores 에 반환됩니다
db.scores.aggregate([ { $addFields: { minScores: { $minN: { n: 2, input: "$score" } } } } ])
이 연산은 다음과 같은 결과를 반환합니다.
[{ "playerId": 1, "score": [ 1, 2, 3 ], "minScores": [ 1, 2 ] }, { "playerId": 2, "score": [ 12, 90, 7, 89, 8 ], "minScores": [ 7, 8 ] }, { "playerId": 3, "score": [ null ], "minScores": [ ] }, { "playerId": 4, "score": [ ], "minScores": [ ] }, { "playerId": 5, "score": [ 1293, "2", 3489, 9 ], "minScores": [ 9, 1293 ] }]