Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Möchten Sie eine vorhandene MongoDB-Anwendung migrieren oder MongoDB Query Language (MQL)-Features verwenden? Betrachten Sie Azure DocumentDB.
Suchen Sie nach einer Datenbanklösung für hochskalige Szenarien mit einer Vereinbarung über verfügbarkeitsbasierte Servicelevels (Service Level Agreement, SLA) von 99,999% Verfügbarkeit, sofortige Automatische Skalierung und automatisches Failover über mehrere Regionen hinweg? Betrachten Sie Azure Cosmos DB für NoSQL.
Die Aggregationspipeline ist ein leistungsstarkes Tool, mit dem Entwickler erweiterte Datenanalysen und -bearbeitungen für ihre Sammlungen durchführen können. Bei der Pipeline handelt es sich um eine Reihe von Datenverarbeitungsvorgängen, die für die Eingabedokumente ausgeführt werden, um eine berechnete Ausgabe zu generieren. Die Pipelinephasen verarbeiten die Eingabedokumente und übergeben das Ergebnis jeweils an die nächste Phase. In jeder Phase wird ein bestimmter Vorgang für die Daten ausgeführt. Beispiele wären etwa Filtern, Gruppieren, Sortieren und Transformieren.
Allgemeine Syntax
Die grundlegende Syntax für eine Aggregationspipeline lautet wie folgt:
db.collection.aggregate([ { stage1 }, { stage2 }, ... { stageN }])
Hierbei ist „db.collection“ die MongoDB-Sammlung, für die Sie die Aggregation ausführen möchten, und „stage1“, „stage2“, ..., „stageN“ sind die anzuwendenden Pipelinephasen.
Beispielphasen
Cosmos DB for MongoDB bietet ein breites Spektrum an Phasen, die Sie in Ihrer Pipeline verwenden können. Hierzu zählen unter anderem folgende:
- $match: Filtert die Dokumente so, dass nur die Dokumente übergeben werden, die der angegebenen Bedingung entsprechen.
- $project: Transformiert die Dokumente in ein neues Format, indem Felder hinzugefügt, entfernt oder aktualisiert werden.
- $group: Gruppiert Dokumente nach einem oder mehreren Feldern und führt verschiedene Aggregatfunktionen für die gruppierten Daten aus.
- $sort: Sortiert die Dokumente basierend auf den angegebenen Feldern.
- $skip: Überspringt die angegebene Anzahl von Dokumenten.
- $limit: Begrenzt die Anzahl von Dokumenten, die an die nächste Phase übergeben werden.
- $unwind: Dekonstruiert ein Arrayfeld aus den Eingabedokumenten, um ein Dokument für jedes Element auszugeben.
Alle verfügbaren Stufen sehen Sie unter unterstützte Features.
Beispiele
Im Folgenden finden Sie einige Beispiele dafür, wie Sie die Aggregationspipeline verwenden können, um verschiedene Vorgänge für Ihre Daten auszuführen:
Filtern: Wenn Sie nach Dokumenten filtern möchten, die ein Mengenfeld (quantity) enthalten, dessen Wert größer als 20 ist, können Sie die folgende Pipeline verwenden:
db.collection.aggregate([
{ $match: { quantity: { $gt: 20 } } }
])
Gruppieren: Wenn Sie Dokumente nach einem Kategoriefeld (category) gruppieren und die Gesamtmenge (quantity) für die einzelnen Gruppen berechnen möchten, können Sie die folgende Pipeline verwenden:
db.collection.aggregate([
{ $group: { _id: "$category", totalQuantity: { $sum: "$quantity" } } }
])
Sortieren: Wenn Sie Dokumente absteigend nach dem Preisfeld (price) sortieren möchten, können Sie die folgende Pipeline verwenden:
db.collection.aggregate([
{ $sort: { price: -1 } }
])
Transformieren: Wenn Sie Dokumenten mit einem Preisfeld (price), dessen Wert größer als 100 ist, ein Rabattfeld (discount) hinzufügen möchten, können Sie die folgende Pipeline verwenden:
db.collection.aggregate([
{ $project: { item: 1, price: 1, discount: { $cond: [{ $gt: ["$price", 100] }, 10, 0 ] } } }
])
Entladen: Wenn Sie alle Unterdokumente aus dem Arrayfeld „tags“ trennen und für jeden Wert ein neues Dokument erstellen möchten, können Sie die folgende Pipeline verwenden:
db.collection.aggregate([
{ $unwind: "$tags" }
])
Beispiel mit mehreren Phasen
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 diesem Beispiel wird eine Beispielsammlung namens „sales“ (Umsatz) verwendet, die Dokumente mit folgenden Feldern enthält: „date“ (Datum), „category“ (Kategorie) und „sales“ (Umsatz).
In der ersten Phase { $match: { date: { $gte: "2021-01-01", $lt: "2021-03-01" } } } werden die Dokumente nach dem Datumsfeld (date) gefiltert, und es werden nur Dokumente zurückgegeben, deren Datum zwischen dem 1. Januar 2021 und dem 28. Februar 2021 liegt. Hier wird das Zeichenfolgendatumsformat „JJJJ-MM-TT“ verwendet.
In der zweiten Phase { $group: { _id: "$category", totalSales: { $sum: "$sales" } } } werden die Dokumente nach dem Kategoriefeld (category) gruppiert, und der Gesamtumsatz für die einzelnen Gruppen wird berechnet.
In der dritten Phase { $sort: { totalSales: -1 } } werden die Dokumente absteigend nach dem Feld für den Gesamtumsatz (totalSales) sortiert.
In der vierten Phase { $limit: 5 } wird die Anzahl von Dokumenten begrenzt, sodass nur die obersten fünf Dokumente an die nächste Phase übergegeben werden.
Somit gibt die Pipeline die fünf wichtigsten Kategorien nach Gesamtumsatz für den angegebenen Datumsbereich zurück.
Nächste Schritte
- Informieren Sie sich, wie Studio 3T bei Azure Cosmos DB for MongoDB verwendet wird.
- Informieren Sie sich, wie Robo 3T bei Azure Cosmos DB for MongoDB verwendet wird.
- Untersuchen Sie MongoDB-Beispiele mit Azure Cosmos DB for MongoDB.
- Versuchen Sie, die Kapazitätsplanung für eine Migration zu Azure Cosmos DB durchzuführen? Sie können Informationen zu Ihrem vorhandenen Datenbankcluster für die Kapazitätsplanung verwenden.
- Wenn Sie nur die Anzahl der virtuellen Kerne und Server in Ihrem vorhandenen Datenbankcluster kennen, lesen Sie die Informationen zum Schätzen von Anforderungseinheiten mithilfe von virtuellen Kernen oder virtuellen CPUs.
- Sollten Sie die typischen Anforderungsraten Ihrer aktuellen Datenbankworkload kennen, lesen Sie die Informationen zum Schätzen von Anforderungseinheiten mit dem Azure Cosmos DB-Kapazitätsplaner.