$stdDevSamp (aggregation)

在本页面

Definition

计算 Importing 值的 samples 标准偏差。如果值包含总体人口 samples 的数据 samples,则使用该 samples。 $stdDevSamp忽略非数字值。

如果这些值代表整个数据种群,或者您不希望对更大的种群进行概括,请改用$stdDevPop

$stdDevSamp$group$project阶段可用。

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

{ $stdDevSamp: <expression> }

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

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

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

Behavior

Non-numeric Values

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

Single Value

如果 samples 包含单个数值,则$stdDevSamp返回null

Array Operand

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

$project阶段:

Example

集合users包含具有以下字段的文档:

{_id: 0, username: "user0", age: 20}
{_id: 1, username: "user1", age: 42}
{_id: 2, username: "user2", age: 28}
...

要计算用户 samples 的标准差,以下聚合操作首先使用$sample管道对 100 个用户进行采样,然后使用$stdDevSamp计算 samples 用户的标准差。

db.users.aggregate(
   [
      { $sample: { size: 100 } },
      { $group: { _id: null, ageStdDev: { $stdDevSamp: "$age" } } }
   ]
)

该操作返回如下结果:

{ "_id" : null, "ageStdDev" : 7.811258386185771 }
首页