Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
Você deseja migrar um aplicativo MongoDB existente ou usar recursos da Linguagem de Consulta do MongoDB (MQL)? Considere o Azure DocumentDB.
Você está procurando uma solução de banco de dados para cenários de alta escala com um SLA (contrato de nível de serviço de disponibilidade) de 99,999%, dimensionamento automático instantâneo e failover automático em várias regiões? Considere Azure Cosmos DB para NoSQL.
O pipeline de agregação é uma ferramenta poderosa que permite que os desenvolvedores executem a análise e manipulação de dados avançada em suas coleções. O pipeline é uma sequência de operações de processamento de dados, que são executadas nos documentos de entrada para produzir uma saída computada. As fases do pipeline processam os documentos de entrada e passam seus resultados para o estágio seguinte. Cada estágio executa uma operação específica nos dados, como filtragem, agrupamento, classificação e transformação.
Sintaxe básica
A sintaxe básica para um pipeline de agregação é a seguinte:
db.collection.aggregate([ { stage1 }, { stage2 }, ... { stageN }])
Em que db.collection é a coleção MongoDB na qual você deseja executar a agregação, e stage1, stage2, ..., stageN são os estágios do pipeline que você deseja aplicar.
Estágios de exemplo
O Cosmos DB for MongoDB fornece uma ampla variedade de estágios que você pode usar em seu pipeline, incluindo:
- $match: filtra os documentos para passar apenas os documentos que correspondem à condição especificada.
- $project: transforma os documentos em um novo formulário adicionando, removendo ou atualizando campos.
- $group: agrupa documentos por um ou mais campos e executa várias funções de agregação nos dados agrupados.
- $sort: classifica os documentos com base nos campos especificados.
- $skip: ignora o número especificado de documentos.
- $limit: limita o número de documentos passados para o próximo estágio.
- $unwind: desconstrói um campo de matriz dos documentos de entrada para gerar um documento para cada elemento.
Para exibir todos os estágios disponíveis, confira recursos com suporte
Examples
Confira alguns exemplos de como você pode usar o pipeline de agregação para executar várias operações em seus dados:
Filtragem: para filtrar documentos com um campo de "quantity" maior que 20, você pode usar o seguinte pipeline:
db.collection.aggregate([
{ $match: { quantity: { $gt: 20 } } }
])
Agrupamento: para agrupar documentos pelo campo "category" e calcular a "quantidade" total de cada grupo, você pode usar o seguinte pipeline:
db.collection.aggregate([
{ $group: { _id: "$category", totalQuantity: { $sum: "$quantity" } } }
])
Classificação: para classificar documentos pelo campo "price" em ordem decrescente, você pode usar o seguinte pipeline:
db.collection.aggregate([
{ $sort: { price: -1 } }
])
Transformação: para adicionar um novo campo "desconto" a documentos com um "preço" maior que 100, você pode usar o seguinte pipeline:
db.collection.aggregate([
{ $project: { item: 1, price: 1, discount: { $cond: [{ $gt: ["$price", 100] }, 10, 0 ] } } }
])
Desagregação: Para separar todos os subdocumentos do campo de matriz 'tags' e criar um novo documento para cada valor, você pode usar o seguinte pipeline:
db.collection.aggregate([
{ $unwind: "$tags" }
])
Exemplo com vários estágios
db.sales.aggregate([
{ $match: { date: { $gte: "2021-01-01", $lt: "2021-03-01" } } },
{ $group: { _id: "$category", totalSales: { $sum: "$sales" } } },
{ $sort: { totalSales: -1 } },
{ $limit: 5 }
])
Neste exemplo, estamos usando uma coleção de exemplos chamada "sales" que tem documentos com os seguintes campos: "date", "category" e "sales".
O primeiro estágio { $match: { date: { $gte: "2021-01-01", $lt: "2021-03-01" } } } filtra os documentos pelo campo "date", passando apenas documentos com uma data entre 1º de janeiro de 2021 e 28 de fevereiro de 2021. Estamos usando um formato de data de cadeia de caracteres com o formato "AAAA-MM-DD".
O segundo estágio { $group: { _id: "$category", totalSales: { $sum: "$sales" } } } agrupa os documentos pelo campo "category" e calcula o total de vendas de cada grupo.
O terceiro estágio { $sort: { totalSales: -1 } } ordena os documentos pelo campo "totalSales" em ordem decrescente.
O quarto estágio { $limit: 5 } limita o número de documentos passados para o próximo estágio a apenas os 5 primeiros.
Como resultado, o pipeline retornará as cinco principais categorias por total de vendas para o intervalo de datas especificado.
Próximas Etapas
- Saiba como usar o Studio 3T com o Azure Cosmos DB for MongoDB.
- Saiba como usar o Robo 3T com o Azure Cosmos DB for MongoDB.
- Explore exemplos do MongoDB com o Azure Cosmos DB for MongoDB.
- Tentando fazer o planejamento de capacidade para uma migração para Azure Cosmos DB? Você pode usar informações sobre o seu cluster de banco de dados existente para planejamento de capacidade.
- Se tudo o que sabe é apenas o número de vCores e servidores do cluster de banco de dados existente, leia sobre como estimar unidades de solicitação com vCores ou vCPUs.
- Caso saiba as taxas de solicitação típicas da carga de trabalho do banco de dados atual, leia sobre como estimar unidades de solicitação com o planejador de capacidade do Azure Cosmos DB.