정의
Returns the median (50th percentile) value from documents in a specified window. You can use $median in both document-based and range-based windows.
참고
명확화
이 페이지에서는 창 함수로 사용되는 경우의 $median에 대해 설명합니다.
다음과 같은 다른 컨텍스트에서도 $median를 사용할 수 있습니다.
$median (accumulator)그룹화에 사용되어 입력 문서 그룹 의 중앙값 을 반환합니다.$median (expression)값 배열 의 중앙값 반환합니다.
구문
{ $setWindowFields: { ... output: { <field>: { $median: { input: <expression>, method: <string> } } } } }
명령 필드
필드 | 유형 | 필요성 | 설명 |
|---|---|---|---|
| 표현식 | 필수 사항 | 중앙값 이 계산되는 값을 반환합니다. |
| 문자열 | 필수 사항 |
|
행동
계산 고려 사항
$median을 창 함수로 사용하면 method: "approximate"이 지정된 경우에도 근사치보다 항상 정확한 백분위 계산 알고리즘 사용합니다.
예시
이 페이지의 예제에서는 sample_mflix 데이터 세트의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB deployment 에 로드하는 방법에 대한 자세한 내용은 샘플 데이터 세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우 이 페이지의 예제를 실행 하려면 데이터베이스를 삭제하고 다시 만들어야 할 수 있습니다.
이 예시 $setWindowFields를 사용하여 어드벤쳐, 코메디, 드라마 장르의 세 가지 모두에 속하는 각 영화의 IMDb 평점 중앙값 을 계산합니다. 이 창 이전 연도, 같은 연도, 다음 연도에 걸쳐 있습니다( [ -1, 1 ] 범위 ).
db.movies.aggregate( [ { $match: { genres: { $all: ["Adventure", "Comedy", "Drama"] }, year: { $gte: 2000, $lte: 2005 } } }, { $setWindowFields: { sortBy: { year: 1 }, output: { medianRatingByYear: { $median: { input: "$imdb.rating", method: "approximate" }, window: { range: [ -1, 1 ] } } } } }, { $project: { _id: 0, title: 1, year: 1, genres: 1, "imdb.rating": 1, medianRatingByYear: 1 } }, { $sort: { year: 1, "imdb.rating": -1 } }, { $limit: 10 } ] )
이전 파이프라인의 경우:
$match2000 ~ 2005 사이에 출시된 어드벤쳐, 코메디, 드라마 세 장르 모두에 속하는 영화에 대한 필터입니다.$setWindowFields는year를 오름차순으로 정렬하고 범위 기반 창[ -1, 1 ]로 적용하여$median를 적용합니다. 각 영화의medianRatingByYear은(는) 1년 이내에 개봉한 세 가지 장르 영화의 중앙값imdb.rating입니다.$project에는title,year,genres,imdb.rating및medianRatingByYear필드만 포함됩니다.$sort는 결과를year을 기준으로 오름차순으로 정렬한 다음imdb.rating를 기준으로 내림차순으로 정렬합니다.$limit가독성을 높이기 위해 출력을 10 결과로 제한합니다.