On this page
$stdDevPop (aggregation)
在本页面
Definition
$stdDevPop
- 3.2 版中的新功能。
计算 Importing 值的总体标准差。如果值包含您要表示的整个数据总体,并且不希望针对较大的总体进行概括,则使用该值。 $stdDevPop忽略非数字值。
如果这些值仅代表要概括的总体数据 samples,请改用$stdDevSamp。
$stdDevPop在$group和$project阶段可用。
在$group阶段中使用时,$stdDevPop
会为一组按键共享同一组且具有以下语法的文档返回指定表达式的填充标准差:
$stdDevPop
有一个指定的表达式作为其操作数:
{ $stdDevPop: <expression> }
在$project阶段中使用时,$stdDevPop
返回每个文档的指定表达式或表达式列表的标准偏差,并具有以下两种语法之一:
$stdDevPop
有一个指定的表达式作为其操作数:
{ $stdDevPop: <expression> }
$stdDevPop
有一个指定表达式的列表作为其操作数:
{ $stdDevPop: [ <expression1>, <expression2> ... ] }
$stdDevPop
的参数可以是任何expression,只要它解析为数组即可。有关表达式的更多信息,请参见Expressions
Behavior
Non-numeric Values
$stdDevPop忽略非数字值。如果$stdDevPop的所有操作数均为非数字,则$stdDevPop返回null
。
Single Value
如果 samples 包含单个数值,则$stdDevPop返回0
。
Array Operand
在$group阶段,如果表达式解析为数组,则$stdDevPop将操作数视为非数值。
在$project阶段:
使用单个表达式作为其操作数,如果表达式解析为数组,则$stdDevPop遍历数组以对数组的数字元素进行操作以返回单个值。
使用表达式列表作为其操作数,如果任何表达式都解析为数组,则$stdDevPop不会遍历数组,而是将数组视为非数字值。
Examples
在$ group 阶段使用
名为users
的集合包含以下文档:
{ "_id" : 1, "name" : "dave123", "quiz" : 1, "score" : 85 }
{ "_id" : 2, "name" : "dave2", "quiz" : 1, "score" : 90 }
{ "_id" : 3, "name" : "ahn", "quiz" : 1, "score" : 71 }
{ "_id" : 4, "name" : "li", "quiz" : 2, "score" : 96 }
{ "_id" : 5, "name" : "annT", "quiz" : 2, "score" : 77 }
{ "_id" : 6, "name" : "ty", "quiz" : 2, "score" : 82 }
以下示例计算每个测验的标准偏差:
db.users.aggregate([
{ $group: { _id: "$quiz", stdDev: { $stdDevPop: "$score" } } }
])
该操作返回以下结果:
{ "_id" : 2, "stdDev" : 8.04155872120988 }
{ "_id" : 1, "stdDev" : 8.04155872120988 }
在$ project 阶段中使用
名为quizzes
的集合包含以下文档:
{
"_id" : 1,
"scores" : [
{
"name" : "dave123",
"score" : 85
},
{
"name" : "dave2",
"score" : 90
},
{
"name" : "ahn",
"score" : 71
}
]
}
{
"_id" : 2,
"scores" : [
{
"name" : "li",
"quiz" : 2,
"score" : 96
},
{
"name" : "annT",
"score" : 77
},
{
"name" : "ty",
"score" : 82
}
]
}
以下示例计算每个测验的标准偏差:
db.quizzes.aggregate([
{ $project: { stdDev: { $stdDevPop: "$scores.score" } } }
])
该操作返回以下结果:
{ "_id" : 1, "stdDev" : 8.04155872120988 }
{ "_id" : 2, "stdDev" : 8.04155872120988 }