AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

$median(アキュムレータ演算子)

$median

バージョン7.0の新機能。

グループ内のドキュメントの 中央値 (50 パーセンタイル) の近似値が返されます。

$median アキュムレータは次のステージで使用可能です。

注意

曖昧さ回避

このページでは、$median をアキュムレータとして使用する場合について説明します。アキュムレータは、入力ドキュメントのグループ全体で集計値を返します。

$median は、これらの他のコンテキストでも使用できます。

{ $median: { input: <number>, method: <string> }}

$percentile は、次のフィールドがあります。

フィールド
タイプ
必要性
説明

input

式

必須

$percentile この式によって返される値について、50パーセンタイルを計算します。input は数値型として評価される式である必要があります。式が数値型に評価されない場合、$percentile 計算はその値を無視します。

method

文字列

必須

mongodが50パーセンタイル値を計算するのに使用する方法。 メソッドは'approximate'である必要があります。

アキュムレータとして使用する場合、$median:

  • グループ内のすべてのドキュメントに対して 1 つの結果を計算します。

  • 近似パーセンタイルの計算に t-digest アルゴリズムを使用します。限られたサイズのデータ構造を使用して中央値を計算するには、近似が必要です。

アキュムレータとして使用される場合、$median は常に近似アルゴリズムを使用します。その結果、t-digest 近似アルゴリズムにおける偽ランダム性のため、同じデータセットに対して計算されたパーセンタイル $median が返す値は、各実行するで異なる可能性があります。さらに、$median は正確な統計的中央値とは若干異なる値を返す可能性があります。

このページの例では、sample_mflix データセット のデータを使用しています。自己管理型 MongoDB 配置にこのデータセットをロードする方法の詳細については、「サンプル データセットのロード」を参照してください。サンプル データベースに何らかの変更を加えた場合は、今ページの例を実行するには、データベースを削除して再作成する必要がある可能性があります。

次の例では、$median を使用して、2000 年から 2004 年までのアクション映画の 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 } }] )

上記のパイプラインでは、

  • $match 2000 から 2004 の間に公開され、有効な IMDb 評価が付いているアクション映画のフィルター。

  • $group はドキュメントを year でグループ化し、$median を使用して各年のすべてのアクション映画の imdb.rating の中央値を計算します。

  • $sort 結果を年別に昇順でソートします。

このページを評価