Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O aggregate comando é usado para processar registos de dados e devolver resultados calculados. Realiza operações sobre os dados, como filtragem, agrupamento e ordenação, e pode transformar os dados de várias formas. O aggregate comando é altamente versátil e é frequentemente utilizado para análise e relatórios de dados.
Sintaxe
db.collection.aggregate(pipeline, options)
- pipeline: Um conjunto de etapas de agregação que processam e transformam os dados.
-
opções: Opcionais. Especifica mais opções para a agregação, como
explain,allowDiskUse, ecursor.
Examples
Exemplo 1: Calcular vendas totais por categoria
Este exemplo demonstra como calcular as vendas totais de cada categoria da stores coleção.
db.stores.aggregate([
{
$unwind: "$sales.salesByCategory"
},
{
$group: {
_id: "$sales.salesByCategory.categoryName",
totalSales: { $sum: "$sales.salesByCategory.totalSales" }
}
}
])
Saída da amostra
[
{ "_id": "Christmas Trees", "totalSales": 3147281 },
{ "_id": "Nuts", "totalSales": 3002332 },
{ "_id": "Camping Tables", "totalSales": 4431667 }
]
Exemplo 2: Encontre lojas com mais de 10 funcionários a tempo inteiro
Este exemplo mostra como filtrar lojas onde o número de funcionários a tempo inteiro é superior a 10.
db.stores.aggregate([
{
$match: {
"staff.totalStaff.fullTime": { $gt: 10 }
}
}
])
Saída da amostra
[
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
"name": "Lenore's DJ Equipment Store",
"location": { "lat": -9.9399, "lon": -0.334 },
"staff": { "totalStaff": { "fullTime": 18, "partTime": 7 } },
"sales": {
"totalSales": 35911,
"salesByCategory": [ { "categoryName": "DJ Headphones", "totalSales": 35911 } ]
},
"promotionEvents": [
{
"discounts": [
{ "categoryName": "DJ Turntables", "discountPercentage": 18 },
{ "categoryName": "DJ Mixers", "discountPercentage": 15 }
]
}
],
"tag": [ "#SeasonalSale", "#FreeShipping", "#MembershipDeals" ]
}
]
Exemplo 3: Liste todos os eventos promocionais com descontos superiores a 15%
Este exemplo lista todos os eventos promocionais onde qualquer desconto é superior a 15%.
db.stores.aggregate([
{
$unwind: "$promotionEvents"
},
{
$unwind: "$promotionEvents.discounts"
},
{
$match: {
"promotionEvents.discounts.discountPercentage": { $gt: 15 }
}
},
{
$group: {
_id: "$promotionEvents.eventName",
discounts: { $push: "$promotionEvents.discounts" }
}
}
])
Saída da amostra
[
{
"discounts": [
{ "categoryName": "Basketball Gear", "discountPercentage": 23 },
{ "categoryName": "Wool Carpets", "discountPercentage": 22 },
{
"categoryName": "Portable Bluetooth Speakers",
"discountPercentage": 24
}
]
}
]