Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

$stdDevPop (operador de acumulación)

$stdDevPop

Cambiado en la versión 5.0.

Calculates the population standard deviation of the input values. Use if the values encompass the entire population of data you want to represent and do not wish to generalize about a larger population. $stdDevPop ignores non-numeric values.

Si los valores representan solo una muestra de una población de datos sobre la que se generaliza, utiliza $stdDevSamp en su lugar.

$stdDevPop está disponible en estas etapas:

When used in the $bucket, $bucketAuto, $group, and $setWindowFields stages, $stdDevPop has this syntax:

{ $stdDevPop: <expression> }

When used in other supported stages, $stdDevPop has one of two syntaxes:

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

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

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

The argument for $stdDevPop can be any expression as long as it resolves to an array.

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 como un double.

$stdDevPop ignores non-numeric values. If all operands for a $stdDevPop are non-numeric, $stdDevPop returns null.

If the sample consists of a single numeric value, $stdDevPop returns 0.

In the $group and $setWindowFields stages, if the expression resolves to an array, $stdDevPop treats the operand as a non-numerical value and has no effect on the calculation.

En las otras etapas admitidas:

  • With a single expression as its operand, if the expression resolves to an array, $stdDevPop traverses into the array to operate on the numeric elements of the array to return a single value.

  • With a list of expressions as its operand, if any of the expressions resolves to an array, $stdDevPop does not traverse into the array but instead treats the array as a non-numeric value.

Comportamiento con valores en una $setWindowFields etapa ventana:

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

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

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

  • Si la ventana contiene Infinity valores, retorna null.

  • Si ninguno de los puntos anteriores aplica, devuelve un valor de 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 }

Crea una colección de ejemplo llamada 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 }
] )

This example uses $stdDevPop in the $setWindowFields stage to output the population standard deviation of the cake sales quantity for each state:

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 sets the stdDevPopQuantityForState field to the quantity population standard deviation value using $stdDevPop that is run in a documents window.

    The window contains documents between an unbounded lower limit and the current document in the output. This means $stdDevPop returns the quantity population standard deviation value for the documents between the beginning of the partition and the current document.

En este ejemplo de salida, el valor de desviación estándar de la población de 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 }