Docs Menu
Docs Home
/ /

$stdDevPop (operador acumulador)

$stdDevPop

Modificado en la versión 5.0.

Calcula la desviación estándar poblacional de los valores de entrada. Úselo si los valores abarcan toda la población de datos que desea representar y no desea generalizar sobre una población mayor. $stdDevPop ignora valores no numéricos.

Si los valores representan solo una muestra de una población de datos a partir de la cual se puede generalizar sobre la población, utilice $stdDevSamp en su lugar.

$stdDevPop está disponible en estas etapas:

Cuando se utiliza en las $bucket $bucketAuto$group $setWindowFields etapas,, y, tiene esta$stdDevPop sintaxis:

{ $stdDevPop: <expression> }

Cuando se utiliza en otras etapas compatibles, tiene una de dos$stdDevPop sintaxis:

  • $stdDevPop tiene una expresión especificada como su operando:

    { $stdDevPop: <expression> }
  • $stdDevPop tiene una lista de expresiones especificadas como su operando:

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

El argumento para puede $stdDevPop ser cualquier expresión siempre que se resuelva en una matriz.

Para obtener más información sobre las expresiones, consulta Expresiones.

$stdDevPop devuelve la desviación estándar de la población de los valores de entrada decimal como.

$stdDevPop ignora los valores no numéricos. Si todos los operandos de no son $stdDevPop numéricos, $stdDevPop nulldevuelve.

Si la muestra consta de un único valor numérico, $stdDevPop 0devuelve.

En las etapas y, si la $group expresión se resuelve en una matriz, trata el operando como un valor no numérico y $setWindowFields $stdDevPop no tiene ningún efecto en el cálculo.

En las otras etapas admitidas:

  • Con una única expresión como operando, si la expresión se resuelve en un arreglo, $stdDevPop recorre el arreglo para operar sobre sus elementos numéricos y devolver un único valor.

  • Con una lista de expresiones como su operando, si alguna de las expresiones se resuelve en un arreglo, $stdDevPop no recorre el arreglo sino que lo trata como un valor no numérico.

Comportamiento con valores en una $setWindowFields ventana de etapa:

  • Ignora valores no numéricos, valores null y campos faltantes en una ventana.

  • Si la ventana está vacía, devuelve null.

  • Si la ventana contiene un valor NaN, devuelve null.

  • Si la ventana contiene Infinity valores, retorna null.

  • Si no se aplica ninguno de los puntos anteriores, devuelve un valor double.

Crea una colección llamada users con los siguientes documentos:

db.users.insertMany( [
{ _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 }
] )

El siguiente ejemplo calcula la desviación estándar de cada cuestionario:

db.users.aggregate( [
{ $group: { _id: "$quiz", stdDev: { $stdDevPop: "$score" } } }
] )

La operación devuelve los siguientes resultados:

{ "_id" : 2, "stdDev" : 8.04155872120988 }
{ "_id" : 1, "stdDev" : 8.04155872120988 }

Cree una colección de ejemplo denominada quizzes con los siguientes documentos:

db.quizzes.insertMany( [
{
_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 }
]
}
] )

El siguiente ejemplo calcula la desviación estándar de cada cuestionario:

db.quizzes.aggregate( [
{ $project: { stdDev: { $stdDevPop: "$scores.score" } } }
] )

La operación devuelve los siguientes resultados:

{ _id : 1, stdDev : 8.04155872120988 }
{ _id : 2, stdDev : 8.04155872120988 }

Nuevo en la versión 5.0.

Crea una colección de cakeSales que incluya ventas de pasteles en el estado de California (CA) y Washington (WA):

db.cakeSales.insertMany( [
{ _id: 0, type: "chocolate", orderDate: new Date("2020-05-18T14:10:30Z"),
state: "CA", price: 13, quantity: 120 },
{ _id: 1, type: "chocolate", orderDate: new Date("2021-03-20T11:30:05Z"),
state: "WA", price: 14, quantity: 140 },
{ _id: 2, type: "vanilla", orderDate: new Date("2021-01-11T06:31:15Z"),
state: "CA", price: 12, quantity: 145 },
{ _id: 3, type: "vanilla", orderDate: new Date("2020-02-08T13:13:23Z"),
state: "WA", price: 13, quantity: 104 },
{ _id: 4, type: "strawberry", orderDate: new Date("2019-05-18T16:09:01Z"),
state: "CA", price: 41, quantity: 162 },
{ _id: 5, type: "strawberry", orderDate: new Date("2019-01-08T06:12:03Z"),
state: "WA", price: 43, quantity: 134 }
] )

Este ejemplo utiliza $stdDevPop en la etapa para generar la desviación estándar de la población de las ventas de $setWindowFields pasteles quantity para state cada:

db.cakeSales.aggregate( [
{
$setWindowFields: {
partitionBy: "$state",
sortBy: { orderDate: 1 },
output: {
stdDevPopQuantityForState: {
$stdDevPop: "$quantity",
window: {
documents: [ "unbounded", "current" ]
}
}
}
}
}
] )

En el ejemplo:

  • partitionBy: "$state" particiona los documentos de la colección en state. Existen particiones para CA y WA.

  • sortBy: { orderDate: 1 } ordena los documentos de cada partición por orderDate en orden ascendente (1), de modo que el orderDate más antiguo sea el primero.

  • output Establece el stdDevPopQuantityForState campo en el quantity valor de desviación estándar de la población utilizando que se $stdDevPop ejecuta en una ventana de documentos.

    La ventana contiene documentos entre un límite inferior unbounded y el documento current en la salida. Esto significa que $stdDevPop devuelve el valor de desviación estándar poblacional quantity para los documentos entre el inicio de la partición y el documento actual.

En este ejemplo de salida, el valor de la desviación estándar de la población quantity para CA y WA se muestra en el campo stdDevPopQuantityForState:

{ _id : 4, type : "strawberry", orderDate : ISODate("2019-05-18T16:09:01Z"),
state : "CA", price : 41, quantity : 162, stdDevPopQuantityForState : 0 }
{ _id : 0, type : "chocolate", orderDate : ISODate("2020-05-18T14:10:30Z"),
state : "CA", price : 13, quantity : 120, stdDevPopQuantityForState : 21 }
{ _id : 2, type : "vanilla", orderDate : ISODate("2021-01-11T06:31:15Z"),
state : "CA", price : 12, quantity : 145, stdDevPopQuantityForState : 17.249798710580816 }
{ _id : 5, type : "strawberry", orderDate : ISODate("2019-01-08T06:12:03Z"),
state : "WA", price : 43, quantity : 134, stdDevPopQuantityForState : 0 }
{ _id : 3, type : "vanilla", orderDate : ISODate("2020-02-08T13:13:23Z"),
state : "WA", price : 13, quantity : 104, stdDevPopQuantityForState : 15 }
{ _id : 1, type : "chocolate", orderDate : ISODate("2021-03-20T11:30:05Z"),
state : "WA", price : 14, quantity : 140, stdDevPopQuantityForState : 15.748015748023622 }

Volver

$push

En esta página