定义
计算一组文档中值的总体标准差。如果这些值包含您想表示的整个数据群体,并且您不希望将结果推算到更大的群体,请使用 $stdDevPop。
如果这些值仅代表总体中的示例,请改用 $stdDevSamp。
$stdDevPop 累加器可在以下阶段使用:
注意
消歧
本页介绍了 $stdDevPop 用作 累加器 时的情况。累加器返回跨一组输入文档的聚合值。
您还可以在这些其他上下文中使用 $stdDevPop:
$stdDevPop (expression), 返回数组中数值的总体标准偏差。$stdDevPop (window function),用于在$setWindowFields阶段计算特定窗口中文档值的总体标准差。
语法
{ $stdDevPop: <expression> }
有关表达式的更多信息,请参阅表达式。
行为
结果类型
$stdDevPop 以double形式返回输入值的总体标准差。
非数值或缺失值
$stdDevPop 忽略非数字值,包括缺失值。如果所有输入值均非数字,则 $stdDevPop 会返回 null。
单值
如果输入由单个数值组成,$stdDevPop 将返回 0。
例子
本页上的示例使用来自 sample_mflix 数据集的数据。有关如何将此数据集加载到您的自管理 MongoDB 部署中的详细信息,请参阅 加载示例数据集。如果您对示例数据库进行了任何修改,您可能需要删除并重新创建数据库,才能运行此页面上的示例。
以下示例按照主管对电影进行分组,并返回在至少有 10 部电影的主管中,IMDb 评分变化最大的五位主管。
db.movies.aggregate( [ { $match: { directors: { $exists: true }, "imdb.rating": { $type: "double" } } }, { $unwind: "$directors" }, { $group: { _id: "$directors", movieCount: { $sum: 1 }, stdDevRating: { $stdDevPop: "$imdb.rating" } } }, { $match: { movieCount: { $gte: 10 } } }, { $sort: { stdDevRating: -1 } }, { $limit: 5 } ] )
前面的管道: