AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

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

$median

バージョン7.0の新機能。

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

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

注意

曖昧さ回避

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

次の他のコンテキストでは $median を使用することもできます。

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

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

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

input

式

必須

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

method

文字列

必須

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

アキュムレータとして使用する場合、$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 } }
] )

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

  • $match は、有効な IMDb 評価を持つ 2000 と 2004 の間にリリースされたアクション映画のフィルタリングをサポートします。

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

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

このページを評価