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

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

$percentile

バージョン7.0の新機能。

指定パーセンタイル値に対応するスカラー値の配列を返します。

次のステージで使用可能:

注意

曖昧さ回避

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

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

{ $percentile: { input: <expression>, p: [ <expression1>, <expression2>, ... ], method: <string> }}

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

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

input

式

必須

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

p

式

必須

$percentile p 内の各要素のパーセンタイル値を計算します。これらの要素は計算するクアンタイルを指定します。また、範囲 0.0 から 1.0 までの数値( および を含む)である必要があります。

$percentile は、 pの要素と同じ順序で結果を返します。

method

文字列

必須

MongoDB がパーセンタイル値を計算するために使用する方法。メソッドは 'approximate' でなければなりません。

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

  • グループ内のすべてのドキュメントで集計された、グループごとに1つのパーセンタイルセットを計算します。

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

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

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

次の例では、$percentile アキュムレータを使用して、ActionジャンルとDramaジャンルの映画について、50パーセンタイルと90パーセンタイルの IMDB 評価を計算します。

db.movies.aggregate( [ { $unwind: "$genres" }, { $match: { genres: { $in: [ "Action", "Drama" ] }, "imdb.rating": { $exists: true } } }, { $group: { _id: "$genres", ratingPercentiles: { $percentile: { input: "$imdb.rating", p: [ 0.5, 0.9 ], method: "approximate" } } } }, { $sort: { _id: 1 } }] )

以前のパイプライン:

  • $unwind を使用して、genres 配列内の各ジャンルに個別のドキュメントを作成します。

  • $match を使用して、Action または Drama に分類され、IMDB 評価フィールドを持つ映画をフィルターします。

  • 映画をジャンル別にグループ化する。

  • p: [0.5, 0.9]とともに、$percentile を使用して各ジャンルの50パーセンタイルと90パーセンタイルのIMDB評価を計算します。

  • $sort を使用して、ジャンル名で出力に順序を付けます。

出力 ratingPercentiles 配列には、各ジャンルの 50 パーセンタイルと 90 パーセンタイルの IMDB 評価の 2 つの値が含まれています。

このページを評価