Definição
Calcula o desvio padrão da amostra de valores em um grupo de documentos.
Utilize $stdDevSamp se os valores de entrada representarem uma amostra de uma população de dados a partir da qual você deseja generalizar sobre a população. Se os valores representarem toda a população de dados, use $stdDevPop em vez disso.
O acumulador $stdDevSamp está disponível nos seguintes estágios:
Observação
Desambiguação
Esta página descreve $stdDevSamp quando usado como acumulador. Os acumuladores retornam um valor agregado em um grupo de documentos de entrada.
Você também pode usar $stdDevSamp nestes outros contextos:
$stdDevSamp (expression), que retorna o desvio padrão da amostra de valores numéricos em uma array.$stdDevSamp (window function), que é usado no estágio$setWindowFieldspara calcular o desvio padrão da amostra de valores em uma janela.
Sintaxe
{ $stdDevSamp: <expression> }
Comportamento
Tipo de resultado
$stdDevSamp retorna o desvio padrão da amostra dos valores de entrada como double.
Non-Numeric Values
$stdDevSamp ignora valores não numéricos, valores nulos e campos ausentes. Se todos os valores de entrada forem não numéricos ou ausentes, $stdDevSamp retornará null.
Valor único
Se a entrada consistir em um único valor numérico, $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 retorna os cinco diretores com as mais diversas classificações do IMDb entre diretores com pelo menos 10 filmes.
db.movies.aggregate( [ { $match: { directors: { $exists: true }, "imdb.rating": { $type: "double" } } }, { $unwind: "$directors" }, { $group: { _id: "$directors", movieCount: { $sum: 1 }, stdDevSampRating: { $stdDevSamp: "$imdb.rating" } } }, { $match: { movieCount: { $gte: 10 } } }, { $sort: { stdDevSampRating: -1 } }, { $limit: 5 } ] )
O pipeline anterior:
Usa
$matchpara filtrar filmes que têm um campodirectorse umimdb.ratingnumérico.Utiliza
$unwindpara criar um documento separado para cada crédito de diretor .Usa
$grouppara agrupar por diretor, conta os filmes com$sume calculastdDevSampRatingusando$stdDevSampemimdb.rating.Usa um segundo
$matchpara manter apenas os diretores com pelo menos 10 filmes.Utiliza
$sortpara classificar porstdDevSampRatingdecrescente.Usa
$limitpara retornar os principais resultados de 5.