Komma igång med aggregeringspipelinen
Aggregeringspipelinen är ett kraftfullt verktyg som gör det möjligt för utvecklare att utföra avancerad dataanalys och manipulering på sina samlingar. Pipelinen är en sekvens av databearbetningsåtgärder som utförs på indatadokumenten för att skapa en beräknad utdata. Pipelinestegen bearbetar indatadokumenten och skickar resultatet till nästa steg. Varje steg utför en specifik åtgärd på data, till exempel filtrering, gruppering, sortering och transformering.
Grundläggande syntax
Den grundläggande syntaxen för en aggregeringspipeline är följande:
db.collection.aggregate([ { stage1 }, { stage2 }, ... { stageN }])
Där db.collection är den MongoDB-samling som du vill utföra aggregeringen på, och steg1, steg 2, ..., stageN är de pipelinefaser som du vill tillämpa.
Exempelfaser
Cosmos DB for MongoDB innehåller ett brett utbud av steg som du kan använda i din pipeline, inklusive:
- $match: Filtrerar dokumenten så att de endast skickar de dokument som matchar det angivna villkoret.
- $project: Omvandlar dokumenten till ett nytt formulär genom att lägga till, ta bort eller uppdatera fält.
- $group: Grupperar dokument efter ett eller flera fält och utför olika mängdfunktioner på grupperade data.
- $sort: Sorterar dokumenten baserat på de angivna fälten.
- $skip: Hoppar över det angivna antalet dokument.
- $limit: Begränsar antalet dokument som skickas till nästa steg.
- $unwind: Dekonstruerar ett matrisfält från indatadokumenten för att mata ut ett dokument för varje element.
Information om hur du visar alla tillgängliga faser finns i funktioner som stöds
Exempel
Här följer några exempel på hur du kan använda aggregeringspipelinen för att utföra olika åtgärder på dina data:
Filtrering: Om du vill filtrera dokument som har ett "kvantitetsfält" större än 20 kan du använda följande pipeline:
db.collection.aggregate([
{ $match: { quantity: { $gt: 20 } } }
])
Gruppering: Om du vill gruppera dokument efter fältet "kategori" och beräkna det totala antalet för varje grupp kan du använda följande pipeline:
db.collection.aggregate([
{ $group: { _id: "$category", totalQuantity: { $sum: "$quantity" } } }
])
Sortering: Om du vill sortera dokument efter fältet "pris" i fallande ordning kan du använda följande pipeline:
db.collection.aggregate([
{ $sort: { price: -1 } }
])
Transformering: Om du vill lägga till ett nytt fält "rabatt" i dokument som har ett "pris" större än 100 kan du använda följande pipeline:
db.collection.aggregate([
{ $project: { item: 1, price: 1, discount: { $cond: [{ $gt: ["$price", 100] }, 10, 0 ] } } }
])
Varva ned: Om du vill separera alla underdokument från matrisfältet "taggar" och skapa ett nytt dokument för varje värde kan du använda följande pipeline:
db.collection.aggregate([
{ $unwind: "$tags" }
])
Exempel med flera faser
db.sales.aggregate([
{ $match: { date: { $gte: "2021-01-01", $lt: "2021-03-01" } } },
{ $group: { _id: "$category", totalSales: { $sum: "$sales" } } },
{ $sort: { totalSales: -1 } },
{ $limit: 5 }
])
I det här exemplet använder vi en exempelsamling med namnet "sales" som innehåller dokument med följande fält: "date", "category" och "sales".
Den första fasen { $match: { datum: { $gte: "2021-01-01", $lt: "2021-03-01" } } } } filtrerar dokumenten efter fältet "datum" och skickar bara dokument med ett datum mellan 1 januari 2021 och 28 februari 2021. Vi använder ett strängdatumformat med formatet "ÅÅÅÅ-MM-DD".
Det andra steget { $group: { _id: "$category", totalSales: { $sum: "$sales" } } } } grupperar dokumenten efter fältet "kategori" och beräknar den totala försäljningen för varje grupp.
Den tredje fasen { $sort: { totalSales: -1 } } sorterar dokumenten efter fältet "totalSales" i fallande ordning.
Det fjärde steget { $limit: 5 } begränsar antalet dokument som skickas till nästa steg till endast de 5 översta.
Därför returnerar pipelinen de 5 främsta kategorierna efter total försäljning för det angivna datumintervallet.
Nästa steg
- Lär dig hur du använder Studio 3T med Azure Cosmos DB för MongoDB.
- Lär dig hur du använder Robo 3T med Azure Cosmos DB för MongoDB.
- Utforska MongoDB-exempel med Azure Cosmos DB för MongoDB.
- Försöker du planera kapacitet för en migrering till Azure Cosmos DB? Du kan använda information om ditt befintliga databaskluster för kapacitetsplanering.
- Om allt du vet är antalet virtuella kärnor och servrar i ditt befintliga databaskluster kan du läsa om att uppskatta enheter för begäranden med virtuella kärnor eller virtuella kärnor.
- Om du känner till vanliga begäranden för din aktuella databasarbetsbelastning kan du läsa om att uppskatta enheter för begäranden med azure Cosmos DB-kapacitetshanteraren.