$percentile (パーセンタイルアキュムレータ)
最終更新:2026-10-09
$percentile (パーセンタイルアキュムレータ)
$percentile は、グループ内のフィールドの指定パーセンタイル(0〜100)の値を返すアキュムレータで、MongoDB 7.0 以降で利用できます。p 引数は単一の値または配列を受け付けます。method は approximate(既定、高速)と exact をサポートします。p95/p99 のレイテンシや給与分位数によく使われます。
| カテゴリ | アキュムレータ |
|---|---|
| MongoDB バージョン | 7.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $group: { _id: <key>, pct: { $percentile: { input: "$field", p: [ <percentile> ], method: "approximate" } } } }
戻り値:指定したパーセンタイルの値(配列入力・配列出力)
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $percentile: サービスごとの p50・p95・p99 レイテンシ
db.latency.aggregate([
{ $group: { _id: '$service', pct: { $percentile: { input: '$ms', p: [50, 95, 99], method: 'approximate' } } } }
])
出力:
{ "_id": "api", "pct": [12, 45, 80] }
📌 注意事項
- MongoDB 7.0 以降が必要
- p は 0〜100 の範囲で指定する
- 入力の数値以外の値は無視される
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Qp95 はどう計算しますか?
Ap: [95] を渡して分位数を得ます。レイテンシ監視によく使われます。
Qapproximate の精度はどの程度ですか?
A大規模データで誤差は小さく高速です — 監視用途には十分です。精度が重要な場合は exact を使います。
Q$percentile と $median の違いは?
A$median は 50 パーセンタイルに固定です。$percentile は任意のパーセンタイルを扱えます。