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 (accumulator)は、入力ドキュメントのグループ全体の中央値を返すためにグループ化で使用されます。

  • $median (expression)は、値の配列の中央値を返します。

{
$setWindowFields: {
...
output: {
<field>: {
$median: {
input: <expression>,
method: <string>
}
}
}
}
}
フィールド
タイプ
必要性
説明

input

式

必須

中央値が計算された値を返します。 input は、数値に評価される式である必要があります。式が数値に評価されない場合、$median 計算はその値を無視します。

method

文字列

必須

mongod が中央値を計算するのに使用する方法。メソッドは 'approximate' である必要があります。

$median がウィンドウ関数として使用される場合、method: "approximate" が指定されている場合でも、近似値ではなく、常に正確なパーセンタイル計算アルゴリズムが使用されます。

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

この例では、 を使用して、ドキュメント、アクション、アクション アクションの 3 つすべてに属する各映画の中央値 IMDb$setWindowFields 評価を計算します。ウィンドウは、前の年、同じ年、次の年にまたがります(範囲[ -1, 1 ] )。

db.movies.aggregate( [
{
$match: {
genres: { $all: ["Adventure", "Comedy", "Drama"] },
year: { $gte: 2000, $lte: 2005 }
}
},
{
$setWindowFields: {
sortBy: { year: 1 },
output: {
medianRatingByYear: {
$median: {
input: "$imdb.rating",
method: "approximate"
},
window: { range: [ -1, 1 ] }
}
}
}
},
{
$project: {
_id: 0,
title: 1,
year: 1,
genres: 1,
"imdb.rating": 1,
medianRatingByYear: 1
}
},
{ $sort: { year: 1, "imdb.rating": -1 } },
{ $limit: 10 }
] )

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

  • $match は、2000 から 2005 の間にリリースされた、チャレンジ 管理、CMK、アクション アクションの 3 つのすべてに該当する映画をフィルタリングします。

  • は$setWindowFields yearによって昇順でソートされ、$median の範囲ベースのウィンドウで を適用します。各映画の[ -1, 1 ]medianRatingByYear は、その映画がimdb.rating 1 年以内に公開された 3 ジャンルすべての映画の中央値 です。

  • $projectには、title 、year 、genres 、imdb.rating 、medianRatingByYear フィールドのみが含まれます。

  • $sortyearは結果を で昇順にソートし、次にimdb.rating で降順にソートします。

  • $limit 読みやすくするために出力を 10 の結果に制限します。

このページを評価