정의
$percentile버전 7.0에 추가 되었습니다.
지정된 백분위수 값에 해당하는 스칼라 값의 배열을 반환합니다.
다음 단계에서 사용할 수 있습니다.
참고
명확화
이 페이지에서는 축적자 사용되는
$percentile에 대해 설명합니다. 축적자는 입력 문서 그룹 에서 애그리게이션된 값을 반환합니다.다음과 같은 다른 컨텍스트에서도
$percentile를 사용할 수 있습니다.$percentile (expression)입력 값 배열 에 대한 백분위 값을 계산합니다.$percentile (window function)는$setWindowFields단계에서 특정 창 에 있는 문서에 대한 백분위 값의 배열 반환하는 데 사용됩니다.
구문
{ $percentile: { input: <expression>, p: [ <expression1>, <expression2>, ... ], method: <string> } }
옵션
$percentile 은(는) 다음 필드를 사용합니다.
필드 | 유형 | 필요성 | 설명 |
|---|---|---|---|
| 표현식 | 필수 사항 |
|
| 표현식 | 필수 사항 |
|
| 문자열 | 필수 사항 | MongoDB 백분위 값을 계산하는 데 사용하는 방법입니다. 메서드는 |
행동
축적자 사용되는 경우 $percentile:
그룹 의 모든 문서에서 집계된 그룹 하나의 백분위수 설정하다 를 계산합니다.
대략적인 백분위수를 계산하기 위해 t-digest 알고리즘 사용합니다. 크기가 제한된 데이터 구조를 사용하여 백분위수를 계산하려면 근사치가 필요합니다.
계산 고려 사항
축적자 사용되는 경우 $percentile는 항상 근사치 알고리즘 사용합니다. t-다이제스트 근사치 알고리즘 의 유사 난수성 때문에 동일한 데이터 세트 에서 계산된 백분위 값은 실행 때마다 다를 수 있습니다. 또한 $percentile은 실제 통계 백분위수와 약간 다른 값을 반환할 수 있습니다.
예시
이 페이지의 예제에서는 sample_mflix 데이터 세트의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB deployment 에 로드하는 방법에 대한 자세한 내용은 샘플 데이터 세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우 이 페이지의 예제를 실행 하려면 데이터베이스를 삭제하고 다시 만들어야 할 수 있습니다.
장르별 평점 백분위 계산
다음 예시 $percentile 축적자 사용하여 Action 및 Drama 장르의 영화에 대한 50 및 90번째 백분위 IMDB 평점을 계산합니다.
db.movies.aggregate( [ { $unwind: "$genres" }, { $match: { genres: { $in: [ "Action", "Drama" ] }, "imdb.rating": { $exists: true } } }, { $group: { _id: "$genres", ratingPercentiles: { $percentile: { input: "$imdb.rating", p: [ 0.5, 0.9 ], method: "approximate" } } } }, { $sort: { _id: 1 } } ] )
이전 파이프라인:
$unwind를 사용하여genres배열 의 각 장르에 대해 별도의 문서 생성합니다.$match를 사용하여Action또는Drama로 분류되고 IMDB 등급 필드 있는 영화를 필터하다 합니다.영화를 장르별로 그룹화합니다.
$percentile를 사용하여p: [0.5, 0.9]로 각 장르에 대한 50번째 및 90번째 백분위 IMDB 평점을 계산합니다.$sort를 사용하여 장르 이름별로 출력을 정렬합니다.
출력 ratingPercentiles 배열 각 장르에 대한 50번째 백분위 와 90번째 백분위 IMDB 평점의 두 가지 값이 포함됩니다.