定義
数値の配列に対して計算された 1 つ以上のパーセンタイル値を返します。
注意
曖昧さ回避
このページでは、入力値の配列に対するパーセンタイル値を計算する式として使用する場合の$percentile について説明します。
次の他のコンテキストでは $percentile を使用することもできます。
$percentile (accumulator)は、入力ドキュメントのグループにわたって集計してパーセンタイル値を返します。$percentile (window function)。これは$setWindowFieldsステージで使用され、特定のウィンドウ内のドキュメントのパーセンタイル値の配列を返します。
構文
{ $percentile: { input: <expression>, p: [ <expression1>, <expression2>, ... ], method: <string> } }
オプション
フィールド | タイプ | 説明 |
|---|---|---|
| 配列 | 次のいずれかになります。
|
| 式 |
|
| 文字列 | MongoDB でパーセンタイル 値を計算するために使用される方法。メソッドは |
動作
式として使用する場合、$percentile は、method: 'approximate' が指定されている場合でも、近似値ではなく常に正確なパーセンタイル計算アルゴリズムを使用します。これは、すべての入力値をメモリに保持できれば、式は制限されたサイズの配列に対して動作するためです。
例
testScores コレクションを作成します。
db.testScores.insertMany( [ { studentId: "2345", scores: [ 62, 81, 80, 75, 68 ] }, { studentId: "2356", scores: [ 60, 83, 79, 72, 65 ] }, { studentId: "2358", scores: [ 67, 82, 78, 70, 84 ] }, { studentId: "2367", scores: [ 64, 72, 77, 58, 91 ] }, { studentId: "2369", scores: [ 60, 53, 72, 85, 63 ] } ] )
次のパイプラインでは、$percentile を使用して、各生徒の 25 回、50 回、75 回のパーセンタイルテスト スコアを計算します。
db.testScores.aggregate( [ { $project: { _id: 0, studentId: 1, testPercentiles: { $percentile: { input: "$scores", p: [ 0.25, 0.5, 0.75 ], method: 'approximate' } } } } ] )
$project$percentile25前述のパイプラインでは、50 と75 は、各生徒の 配列の th、 th、scores パーセンタイルを計算し、それらをtestPercentiles として返します。