定义
$median累加器可在以下阶段使用:
注意
消歧
本页描述了用作累加器时的 $median。累加器返回一群组输入文档的聚合值。
您还可以在其他上下文中使用 $median:
$median (expression),返回单个文档中值大量的中位数。$median (window function),用于$setWindowFields阶段以返回窗口中文档的中位数值。
语法
{ $median: { input: <number>, method: <string> } }
命令字段
$percentile 采用以下字段:
字段 | 类型 | 必要性 | 说明 |
|---|---|---|---|
| 表达式(expression) | 必需 |
|
| 字符串 | 必需 |
|
行为
用作累加器时,$median:
计算群组中所有文档的单个结果。
计算注意事项
用作累加器时,$median 始终使用近似算法。因此,由于 t-digest 近似算法中的伪随机性,在每次运行时,在同一数据集上返回的计算出的百分位数 $median 可能会有所不同。此外,$median 返回的值可能与真实的统计中位数略有不同。
例子
本页上的示例使用 sample_mflix 数据集中的数据。有关如何将此数据集加载到自管理MongoDB 部署中的详细信息,请参阅加载样本数据集。如果对示例数据库进行了任何修改,则可能需要删除并重新创建数据库才能运行本页上的示例。
以下示例使用 $median 计算从 2000 到 2004 每年的动作片 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 } } ] )
在前面的管道中: