Definição
Calcula o desvio padrão da amostra dos valores em um grupo de documentos.
Use $stdDevSamp se os valores de entrada representam 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 nestes estágios:
Observação
Desambiguação
Esta página descreve $stdDevSamp quando usado como um acumulador. 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 um array.$stdDevSamp (window function), que é usado na$setWindowFieldsetapa para 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 não forem numéricos ou estiverem ausentes, $stdDevSamp retorna 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 este conjunto de dados em sua implantação do MongoDB autogerenciado, consulte Carregar o conjunto de dados de amostra. Se você fez alguma modificação 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 classificações IMDb mais variadas entre os 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 filtro filmes que têm um campodirectorse umimdb.ratingnumérico.Usa
$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.Usa
$sortpara ordenar porstdDevSampRatingdecrescente.Usa
$limitpara retornar os 5 principais resultados.