Definição
Retorna a média dos elementos da array numérica.
Observação
Desambiguação
Esta página descreve $avg quando usado como uma expressão, que retorna a média dos elementos numéricos em uma array.
Você também pode usar $avg nestes outros contextos:
$avg (accumulator), que retorna um único valor agregado com base em um número variável de documentos de entrada.$avg (window function), que é usado no estágio$setWindowFieldspara retornar a média dos valores de documentos em uma janela específica.
Sintaxe
Quando usado como expressão, $avg tem uma destas sintaxes:
{ $avg: <expression> }
Nesta sintaxe, o operando é uma expressão única que se torna uma array. $avg percorre a array e retorna a média dos valores numéricos da array. Por exemplo, { $avg: "$testScores" } retorna a média de valores numéricos no campo de array testScores.
{ $avg: [ <expression1>, <expression2> ... ] }
Nesta sintaxe, cada expressão na array de entrada é um único valor numérico. $avg retorna a média dos valores de entrada individuais. Se qualquer uma das expressões de entrada for resolvida para uma array, $avg não percorrerá a array e, em vez disso, tratará a array como um valor não numérico.
Comportamento
Tipo de resultado
O tipo de retorno padrão é duplo. Se pelo menos um valor de entrada for um decimal, o tipo de retorno será um decimal.
Valores não numéricos ou ausentes
$avg ignora valores não numéricos, incluindo valores ausentes. Se todos os valores de entrada forem não numéricos, $avg retornará null.
Exemplo
Criar uma coleção students com os seguintes documentos:
db.students.insertMany( [ { _id: 1, quizzes: [ 10, 6, 7 ], labs: [ 5, 8 ], final: 80, midterm: 75 }, { _id: 2, quizzes: [ 9, 10 ], labs: [ 8, 8 ], final: 95, midterm: 80 }, { _id: 3, quizzes: [ 4, 5, 5 ], labs: [ 6, 5 ], final: 78, midterm: 70 } ] )
A operação a seguir usa $avg no estágio $project para calcular médias para os seguintes campos:
quizzeslabsMédia combinada de
finalemidterm
db.students.aggregate( [ { $project: { quizAvg: { $avg: "$quizzes"}, labAvg: { $avg: "$labs" }, examAvg: { $avg: [ "$final", "$midterm" ] } } } ] )
Saída
[ { _id: 1, quizAvg: 7.666666666666667, labAvg: 6.5, examAvg: 77.5 }, { _id: 2, quizAvg: 9.5, labAvg: 8, examAvg: 87.5 }, { _id: 3, quizAvg: 4.666666666666667, labAvg: 5.5, examAvg: 74 } ]