Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La pipeline di aggregazione è uno strumento potente che consente agli sviluppatori di eseguire analisi e manipolazione avanzate dei dati sulle raccolte. La pipeline è una sequenza di operazioni di elaborazione dei dati, eseguite sui documenti di input per generare un output calcolato. Le fasi della pipeline elaborano i documenti di input e passano il risultato alla fase successiva. Ogni fase esegue un'operazione specifica sui dati, ad esempio il filtro, il raggruppamento, l'ordinamento e la trasformazione.
Sintassi di base
La sintassi di base per una pipeline di aggregazione è la seguente:
db.collection.aggregate([ { stage1 }, { stage2 }, ... { stageN }])
Dove db.collection è la raccolta MongoDB in cui si vuole eseguire l'aggregazione e stage1, stage2, ..., stageN sono le fasi della pipeline da applicare.
Fasi di esempio
Azure Cosmos DB for MongoDB offre un'ampia gamma di fasi che è possibile usare nella pipeline, tra cui:
- $match: filtra i documenti per passare solo quelli che corrispondono alla condizione specificata.
- $project: trasforma i documenti in un nuovo modulo aggiungendo, rimuovendo o aggiornando i campi.
- $group: raggruppa i documenti in base a uno o più campi ed esegue varie funzioni di aggregazione sui dati raggruppati.
- $sort: ordina i documenti in base ai campi specificati.
- $skip: ignora il numero di documenti specificato.
- $limit: limita il numero di documenti passati alla fase successiva.
- $unwind: decostruisce un campo matrice dai documenti di input per restituire un documento per ogni elemento.
Per visualizzare tutte le fasi disponibili, vedere le funzionalità supportate
Esempi
Ecco alcuni esempi di come usare la pipeline di aggregazione per eseguire varie operazioni sui dati:
Filtro: per filtrare i documenti con un campo "quantity" maggiore di 20, è possibile usare la pipeline seguente:
db.collection.aggregate([
{ $match: { quantity: { $gt: 20 } } }
])
Raggruppamento: per raggruppare i documenti in base al campo "category" e calcolare il valore totale di "quantity" per ogni gruppo, è possibile usare la pipeline seguente:
db.collection.aggregate([
{ $group: { _id: "$category", totalQuantity: { $sum: "$quantity" } } }
])
Ordinamento: per ordinare i documenti in base al campo "price" in ordine decrescente, è possibile usare la pipeline seguente:
db.collection.aggregate([
{ $sort: { price: -1 } }
])
Trasformazione: per aggiungere un nuovo campo "discount" ai documenti con un valore di "price" maggiore di 100, è possibile usare la pipeline seguente:
db.collection.aggregate([
{ $project: { item: 1, price: 1, discount: { $cond: [{ $gt: ["$price", 100] }, 10, 0 ] } } }
])
Rimozione: per separare tutti i documenti secondari dal campo matrice "tags" e creare un nuovo documento per ogni valore, è possibile usare la pipeline seguente:
db.collection.aggregate([
{ $unwind: "$tags" }
])
Esempio con più fasi
db.sales.aggregate([
{ $match: { date: { $gte: "2021-01-01", $lt: "2021-03-01" } } },
{ $group: { _id: "$category", totalSales: { $sum: "$sales" } } },
{ $sort: { totalSales: -1 } },
{ $limit: 5 }
])
In questo esempio viene usata una raccolta di esempio denominata "sales" che include documenti con i campi seguenti: "date", "category" e "sales".
La prima fase { $match: { date: { $gte: "2021-01-01", $lt: "2021-03-01" } } } filtra i documenti in base al campo "date", passando solo i documenti con una data compresa tra il 1° gennaio 2021 e il 28 febbraio 2021. Viene usato un formato di data stringa del tipo "AAAA-MM-GG".
La seconda fase { $group: { _id: "$category", totalSales: { $sum: "$sales" } } } } raggruppa i documenti in base al campo "category" e calcola le vendite totali per ogni gruppo.
La terza fase { $sort: { totalSales: -1 } } ordina i documenti in base al campo "totalSales" in ordine decrescente.
La quarta fase { $limit: 5 } limita il numero di documenti passati alla fase successiva solo ai primi 5.
Di conseguenza, la pipeline restituirà le prime 5 categorie in base alle vendite totali per l'intervallo di date specificato.
Passaggi successivi
- Informazioni su come usare Studio 3T con Azure Cosmos DB for MongoDB.
- Informazioni su come usare Robo 3T con Azure Cosmos DB for MongoDB.
- Esplorare gli esempi di MongoDB con Azure Cosmos DB for MongoDB.
- Si sta tentando di pianificare la capacità per una migrazione ad Azure Cosmos DB? È possibile usare le informazioni del cluster di database esistente per la pianificazione della capacità.
- Se si ha disposizione solo il numero di vCore e server nel cluster di database esistente, leggere le informazioni sulla stima delle unità richieste con vCore o vCPU.
- Se si conosce la frequenza delle richieste tipiche per il carico di lavoro corrente del database, leggere le informazioni sulla stima delle unità richieste con lo strumento di pianificazione della capacità di Azure Cosmos DB.