$percentile(百分位数累加器)

最后更新:2026-10-09

$percentile(百分位数累加器)

$percentile 是累加器,返回组内指定字段在给定百分位(0 到 100)上的值,自 MongoDB 7.0 起可用。p 参数可传单个值或数组,返回对应的一个或多个分位值。method 支持 approximate(默认,更快)与 exact。常用于性能监控的 p95、p99 和薪酬分位统计。

分类累加器
MongoDB 版本7.0+
示例语言mongosh (Shell)

📝 语法

{ $group: { _id: <键>, pct: { $percentile: { input: "$字段", p: [ <百分位> ], 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] }

📌 注意事项

更多实战案例即将上线,敬请期待。

📚 相关教程

❓ 常见问题

Qp95 怎么算?
Ap 传 [95],返回该分位的值,常用于监控时延。
Qapproximate 误差大吗?
A对大数据集误差很小且速度快,适合监控场景;精确场景用 exact。
Q$percentile 和 $median 有什么区别?
A$median 固定第 50 百分位,$percentile 支持任意百分位。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏