对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs 菜单

$中位数(累加器运算符)

$median

7.0版本新增。

返回群组中文档的中位数(第 50 个百分位数)的近似值。

$median累加器可在以下阶段使用:

注意

消歧

本页描述了用作累加器时的 $median。累加器返回一群组输入文档的聚合值。

您还可以在其他上下文中使用 $median:

{
$median: {
input: <number>,
method: <string>
}
}

$percentile 采用以下字段:

字段
类型
必要性
说明

input

表达式(expression)

必需

$percentile 在此表达式返回的值的基础上计算第 50 个百分位数。 input 必须是计算结果为数字类型的表达式。如果表达式的计算结果不是数字类型,$percentile 计算将忽略该值。

method

字符串

必需

mongod 用于计算第 50 个百分位数的方法。该方法必须是 'approximate'。

用作累加器时,$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 } }
] )

在前面的管道中:

  • $match 筛选在 2000 和 2004 之间上映且具有有效 IMDb 评分的动作片。

  • $group 按 year 对文档进行分组,并使用 $median 计算每年所有动作片的中位数imdb.rating。

  • $sort 按年份升序对结果进行排序。

给本页内容打分