Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

$avg ( operador acumulador )

$avg

Retorna a média de valores numéricos em um grupo de documentos.

O acumulador $avg está disponível nestes estágios:

Observação

Desambiguação

Esta página descreve $avg quando usado como um acumulador. Acumuladores retornam um único valor agregado, como soma, máximo ou mínimo, em um grupo de documentos de entrada.

Você também pode usar $avg nestes outros contextos:

{ $avg: <expression> }

O tipo de retorno padrão é um double. Se pelo menos um valor de entrada for decimal, o tipo de retorno será decimal.

$avg ignora valores não numéricos, incluindo valores ausentes. Se todos os valores de entrada não forem numéricos, $avg retorna null.

Se o operando for resolvido em um array, $avg trata o operando como um valor não numérico.

Criar uma coleção sales com os seguintes documentos:

db.sales.insertMany( [
{ _id: 1, item: "abc", price: 10, quantity: 2, date: ISODate("2014-01-01T08:00:00Z") },
{ _id: 2, item: "jkl", price: 20, quantity: 1, date: ISODate("2014-02-03T09:00:00Z") },
{ _id: 3, item: "xyz", price: 5, quantity: 5, date: ISODate("2014-02-03T09:05:00Z") },
{ _id: 4, item: "abc", price: 10, quantity: 10, date: ISODate("2014-02-15T08:00:00Z") },
{ _id: 5, item: "xyz", price: 5, quantity: 10, date: ISODate("2014-02-15T09:12:00Z") }
] )

A seguinte operação:

  1. Agrupa os documentos pelo campo item.

  2. Utiliza o acumulador $avg para calcular o valor médio e a quantidade média para cada grupo.

db.sales.aggregate(
[
{
$group:
{
_id: "$item",
avgAmount: { $avg: { $multiply: [ "$price", "$quantity" ] } },
avgQuantity: { $avg: "$quantity" }
}
}
]
)

Saída:

[
{ _id: 'xyz', avgAmount: 37.5, avgQuantity: 7.5 },
{ _id: 'abc', avgAmount: 60, avgQuantity: 6 },
{ _id: 'jkl', avgAmount: 20, avgQuantity: 1 }
]