Definição
Calcula o desvio padrão da população de valores em um grupo de documentos. Utilize $stdDevPop se os valores abrangerem toda a população de dados que você deseja representar e você não deseja generalizar.
Se os valores representarem apenas uma amostra da população, use $stdDevSamp em vez disso.
O acumulador $stdDevPop está disponível nos seguintes estágios:
Observação
Desambiguação
Esta página descreve $stdDevPop quando usado como acumulador. Os acumuladores retornam um valor agregado em um grupo de documentos de entrada.
Você também pode usar $stdDevPop nestes outros contextos:
$stdDevPop (expression), que retorna o desvio padrão da população de valores numéricos em uma array.$stdDevPop (window function), que é usado no estágio$setWindowFieldspara calcular o desvio padrão da população de valores de documentos em uma janela específica.
Sintaxe
{ $stdDevPop: <expression> }
Para mais informações sobre expressões, consulte Expressões.
Comportamento
Tipo de resultado
$stdDevPop retorna o desvio padrão da população dos valores de entrada como double.
Valores não numéricos ou ausentes
$stdDevPop ignora valores não numéricos, incluindo valores ausentes. Se todos os valores de entrada forem não numéricos, $stdDevPop retornará null.
Valor único
Se a entrada consistir em um único valor numérico, $stdDevPop retornará 0.
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.
O exemplo a seguir agrupa filmes por diretor e 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 }, stdDevRating: { $stdDevPop: "$imdb.rating" } } }, { $match: { movieCount: { $gte: 10 } } }, { $sort: { stdDevRating: -1 } }, { $limit: 5 } ] )
O pipeline anterior:
Usa
$matchpara filtrar filmes que têm um campodirectorse uma classificação numérica do IMDb.Usa
$unwindpara criar um documento por diretor por filme, de modo que cada par diretor-filme seja agrupado separadamente.Usa
$grouppara agrupar por diretor, contar filmes e calcularstdDevRatingusando$stdDevPopemimdb.rating.Usa
$matchpara manter apenas diretores com pelo menos 10 filmes.Utiliza
$sortpara retornar resultados em ordem decrescente porstdDevRating.Usa
$limitpara retornar os principais resultados de 5.