定義
$medianバージョン7.0の新機能。
50グループ内のドキュメントの中央値( パーセンタイル )の近似値を返します。
$medianアキュムレータは、次のステージで使用できます。
注意
曖昧さ回避
このページでは、アキュムレータとして使用する場合の$median について説明します。アキュムレータは、入力ドキュメントのグループにわたる集計値を返します。
次の他のコンテキストでは $median を使用することもできます。
$median (expression)は、単一のドキュメント内の値の配列の中央値を返します。$median (window function)$setWindowFieldsは、ウィンドウ内のドキュメントから中央値を返すために ステージで使用されます。
構文
{ $median: { input: <number>, method: <string> } }
コマンドフィールド
$percentile は、次のフィールドがあります。
フィールド | タイプ | 必要性 | 説明 |
|---|---|---|---|
| 式 | 必須 |
|
| 文字列 | 必須 |
|
動作
アキュムレータとして使用する場合、$median は次のようになります。
グループ内のすべてのドキュメントに対して単一の結果を計算します。
計算に関する考慮事項
アキュムレータとして使用する場合、$median は常に 近似アルゴリズムを使用します。その結果、 t ダイジェスト近似アルゴリズムの疑似ランダム性があるため、同じデータセットで $median が返す計算パーセンタイルは実行ごとに異なる場合があります。さらに、$median は実際の統計中央値とは若干異なる値を返す場合があります。
例
このページの例では、 sample_mflix データセット のデータを使用します。このデータセットを自己管理型MongoDBデプロイにロードする 方法の詳細については、「 サンプル データセットをロードする 」を参照してください。サンプルデータベースに変更を加えた場合、このページの例を実行するには、データベースを削除して再作成する必要がある場合があります。
次の例では、$median を使用して、2000 から 2004 までのアクション映画の 1 年あたりの中央値 IMDb 評価を計算します。
db.movies.aggregate( [ { $match: { genres: "Action", year: { $gte: 2000, $lte: 2004 }, "imdb.rating": { $gt: 0 } } }, { $group: { _id: "$year", medianRating: { $median: { input: "$imdb.rating", method: "approximate" } } } }, { $sort: { _id: 1 } } ] )
上記のパイプラインでは、