定義
注意
曖昧さ回避
このページでは、値の配列の中央値を計算する式として使用される場合の$median について説明します。
次の他のコンテキストでは $median を使用することもできます。
$median (accumulator)は、入力ドキュメントのグループ全体の中央値を返すためにグループ化で使用されます。$median (window function)$setWindowFieldsは、ウィンドウ内のドキュメントから中央値を返すために ステージで使用されます。
構文
{ $median: { input: <expression>, method: <string> } }
コマンドフィールド
フィールド | タイプ | 必要性 | 説明 |
|---|---|---|---|
| 配列 | 必須 | 次のいずれかになります。
|
| 文字列 | 必須 | MongoDB で中央値を計算するために使用される方法。メソッドは |
動作
$median が式として使用される場合、method: "approximate" が指定されている場合でも、近似値ではなく、常に正確なパーセンタイル計算アルゴリズムが使用されます。
これは、すべての入力値をメモリに保持できれば、式は制限されたサイズの配列に対して動作するためです。
例
次の例では、testScoresコレクションを使用して $median の配列入力形式を示しています。
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 ] } ] )
次のパイプラインでは、$median を使用して各生徒のテストスコアの中央値を計算します。
db.testScores.aggregate( [ { $project: { _id: 0, studentId: 1, testMedians: { $median: { input: "$scores", method: 'approximate' } } } } ] )
上記のパイプラインでは、
$projectと は、各ドキュメントの$median配列で中央値を検索し、それをscorestestMediansとして返します。各結果は、その生徒の記録されたテストのスコアの中央値を反映します。