Definición
Devuelve la desviación estándar muestral de los valores en una ventana.
Nota
Desambiguación
Esta página describe $stdDevSamp cuando se utiliza como función de ventana.
También puedes usar $stdDevSamp en estos otros contextos:
$stdDevSamp (accumulator), que calcula la desviación estándar de la muestra de valores en un grupo de documentos.$stdDevSamp (expression), que calcula la desviación estándar de la muestra de valores numéricos en una matriz.
Sintaxis
{ $setWindowFields: { ... output: { <field>: { $stdDevSamp: <expression> } } } }
Comportamiento
Tipo de resultado
$stdDevSamp devuelve la desviación estándar muestral de los valores de entrada como un double.
Valores no numéricos y valores faltantes
La función de ventana $stdDevSamp ignora los valores no numéricos, incluidos los valores faltantes. Si la ventana no contiene valores numéricos, $stdDevSamp devuelve null.
Valor único
Si la ventana contiene solo un documento, $stdDevSamp devuelve null.
Ejemplo
Los ejemplos de esta página utilizan datos del conjunto de datos sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en su implementación autogestionada de MongoDB, consulte Cargar el conjunto de datos de ejemplo. Si realizó alguna modificación en las bases de datos de ejemplo, es posible que deba eliminarlas y volver a crearlas para ejecutar los ejemplos de esta página.
Este ejemplo utiliza $setWindowFields para calcular un campo de desviación estándar de muestra móvil para cada película musical a partir de 2009 y 2010. Cada documento recibe el valor $stdDevSamp calculado desde el inicio de su partición anual hasta el documento actual.
db.movies.aggregate( [ { $match: { genres: "Musical", year: { $in: [ 2009, 2010 ] }, "imdb.rating": { $type: "double" } } }, { $setWindowFields: { partitionBy: "$year", sortBy: { title: 1 }, output: { stdDevSampRatingInYear: { $stdDevSamp: "$imdb.rating", window: { documents: [ "unbounded", "current" ] } }, rankInYear: { $documentNumber: {} } } } }, { $project: { _id: 0, title: 1, year: 1, "imdb.rating": 1, stdDevSampRatingInYear: 1, rankInYear: 1 } }, { $sort: { year: 1, title: 1 } } ] )
La tubería precedente:
Utiliza
$matchpara filtrar películas musicales de 2009 y 2010 con una calificación numérica de IMDb.Utiliza
$setWindowFieldspara particionar las películas poryeary ordenarlas portitle. La etapa utiliza$stdDevSampcon una ventana de documentos de[ "unbounded", "current" ]para crear los siguientes campos para cada documento:stdDevSampRatingInYear: la desviación estándar de la muestra móvil deimdb.rating.rankInYear: un número de fila por partición asignado por$documentNumber.
El primer documento de cada partición tiene un solo valor en su ventana, por lo que
stdDevSampRatingInYearesnull. Cada documento subsiguiente añade un valor más a la ventana.Utiliza
$projectpara incluirtitle,year,imdb,stdDevSampRatingInYearyrankInYearen la salida.Utiliza
$sortpara ordenar los resultados por año y título.