$stdDevPop (aggregation)

在本页面

Definition

计算 Importing 值的总体标准差。如果值包含您要表示的整个数据总体,并且不希望针对较大的总体进行概括,则使用该值。 $stdDevPop忽略非数字值。

如果这些值仅代表要概括的总体数据 samples,请改用$stdDevSamp

$stdDevPop$group$project阶段可用。

$group阶段中使用时,$stdDevPop会为一组按键共享同一组且具有以下语法的文档返回指定表达式的填充标准差:

{ $stdDevPop: <expression> }

$project阶段中使用时,$stdDevPop返回每个文档的指定表达式或表达式列表的标准偏差,并具有以下两种语法之一:

{ $stdDevPop: <expression> }
{ $stdDevPop: [ <expression1>, <expression2> ... ]  }

$stdDevPop的参数可以是任何expression,只要它解析为数组即可。有关表达式的更多信息,请参见Expressions

Behavior

Non-numeric Values

$stdDevPop忽略非数字值。如果$stdDevPop的所有操作数均为非数字,则$stdDevPop返回null

Single Value

如果 samples 包含单个数值,则$stdDevPop返回0

Array Operand

$group阶段,如果表达式解析为数组,则$stdDevPop将操作数视为非数值。

$project阶段:

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 }
首页