O Aggregation Framework é uma poderosa ferramenta no MongoDB que permite realizar operações de agregação de dados de forma eficiente e flexível. Uma das funcionalidades interessantes do Aggregation Framework é a capacidade de agrupar documentos em intervalos específicos usando o operador $bucket.
O operador $bucket é usado para dividir os valores de um campo em intervalos pré-definidos e agrupar os documentos com base nesses intervalos. Isso é útil quando queremos analisar dados em categorias ou faixas específicas.
Para usar o $bucket, precisamos especificar os seguintes parâmetros:
- groupBy: o campo pelo qual queremos agrupar os documentos;
- buckets: uma lista de intervalos que definem as categorias;
- default: o valor padrão para documentos que não se enquadram em nenhum intervalo;
- output: os campos de saída para cada categoria.
Vamos supor que temos uma coleção de produtos e queremos agrupá-los em faixas de preço. Podemos usar o $bucket da seguinte forma:
db.produtos.aggregate([
{
$bucket: {
groupBy: "$preco",
boundaries: [0, 50, 100, 200],
default: "Outros",
output: {
"total": { $sum: 1 },
"produtos": { $push: "$nome" }
}
}
}
])
Nesse exemplo, estamos agrupando os produtos em quatro faixas de preço: de 0 a 50, de 50 a 100, de 100 a 200 e acima de 200. Os documentos que não se enquadram em nenhuma faixa são agrupados na categoria “Outros”.
Os campos de saída definidos no parâmetro output são “total”, que representa o número total de produtos em cada faixa, e “produtos”, que contém uma lista com os nomes dos produtos em cada faixa.
O resultado dessa operação será um conjunto de documentos com os campos de saída definidos, agrupados de acordo com as faixas de preço. Isso nos permite ter uma visão mais clara da distribuição dos produtos em cada categoria de preço.