Definição
Retorna o desvio padrão da amostra de valores em uma janela.
Observação
Desambiguação
Esta página descreve $stdDevSamp quando usado como uma função de janela.
Você também pode usar $stdDevSamp nestes outros contextos:
$stdDevSamp (accumulator), que calcula o desvio padrão da amostra de valores em um grupo de documentos.$stdDevSamp (expression), que calcula o desvio padrão da amostra de valores numéricos em uma array.
Sintaxe
{ $setWindowFields: { ... output: { <field>: { $stdDevSamp: <expression> } } } }
Comportamento
Tipo de resultado
$stdDevSamp retorna o desvio padrão da amostra dos valores de entrada como double.
Valores não numéricos e ausentes
A função de janela $stdDevSamp ignora valores não numéricos, incluindo valores ausentes. Se a janela não contiver valores numéricos, $stdDevSamp retornará null.
Valor único
Se a janela contiver apenas um documento, $stdDevSamp retornará null.
Exemplo
Os exemplos nesta página usam dados do conjunto de dados sample_mflix. Para obter detalhes sobre como carregar esse conjunto de dados em sua implantação autogerenciada do MongoDB , consulte Carregar o conjunto de dados de amostra. Se você fez modificações nos bancos de dados de amostra, talvez seja necessário descartar e recriar os bancos de dados para executar os exemplos nesta página.
Este exemplo usa $setWindowFields para calcular um campo de desvio padrão de amostra em execução para cada filme Global de 2009 e 2010. Cada documento recebe o valor $stdDevSamp calculado desde o início de sua partição anual até o documento atual.
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 } } ] )
O pipeline anterior:
Usa
$matchpara filtrar filmes músicas de 2009 e 2010 com uma classificação numérica do IMDb.Utiliza
$setWindowFieldspara dividir filmes poryeare classificá-los portitle. O estágio usa$stdDevSampcom uma janela de documentos de[ "unbounded", "current" ]para criar os seguintes campos para cada documento:stdDevSampRatingInYear: o desvio padrão da amostra em execução deimdb.rating.rankInYear: um número de linha por partição atribuído por$documentNumber.
O primeiro documento em cada partição tem apenas um valor em sua janela, portanto
stdDevSampRatingInYearénull. Cada documento subsequente adiciona mais um valor à janela.Utiliza
$projectpara incluirtitle,year,imdb,stdDevSampRatingInYearerankInYearna saída.Utiliza
$sortpara classificar os resultados por ano e título.