Das MongoDB -Aggregations -Framework ist ein leistungsstarkes Tool zur Durchführung komplexer Datentransformationen direkt in der Datenbank. Es verwendet einen auf Pipeline basierenden Ansatz, bei dem Daten eine Reihe von Stufen durchlaufen und jeweils einen bestimmten Betrieb durchführen. Diese Phasen können Filterung, Gruppierung, Sortierung, Projektion und vieles mehr umfassen. Lassen Sie uns mit einem Beispiel veranschaulichen. Stellen Sie sich vor, Sie haben eine Sammlung namens Sales
mit solchen Dokumenten:
<code class="json"> {& quot; _id & quot; : ObjectID ("5f9f16c75474444444444444"), "Artikel". : "abc & quot;," price "& quot; : 10, "Quantity" & quot; : 2, & quot; Datum & quot; : Isodate (& quot; 2024-01-15t00: 00: 00Z & quot;)} {& quot; _id & quot; : ObjectID ("5f9f16c75474444444444445"), "Artikel". : "xyz & quot;," price "& quot; : 20, "Quantity" & quot; : 1, & quot; Datum & quot; : Isodate (& quot; 2024-01-15t00: 00: 00Z & quot;)} {& quot; _id & quot; : ObjectID ("5f9f16c75474444444444446"), "Artikel". : "abc & quot;," price "& quot; : 10, "Quantity" & quot; : 3, & quot; Datum & quot; : ISODate("2024-01-16T00:00:00Z") }</code>
To calculate the total revenue for each item, you would use the following aggregation pipeline:
<code class="javascript">db.sales.aggregate([ { $group: { _id: "$item", totalRevenue: {$ sum: {$ multiply: [& quot; $ Preis Für jede Gruppe berechnet es dann die <code> TotalRevenue </code> mit <code> $ sum </code> und <code> $ multiply </code> zum Multiplizieren von Preis und Menge. Schließlich sortiert es die Ergebnisse in absteigender Reihenfolge von <code> TotalRevenue </code> Verwenden Sie <code> $ sortiert </code>. Dies zeigt, wie mehrere Stufen für komplexe Transformationen miteinander verkettet werden können. Weitere gängige Phasen umfassen <code> $ Match </code> (Filterung), <code> $ project </code> (Auswahl und Umbenennung von Feldern), <code> $ entspannung </code> (dekonstruieren Arrays) und <code> $ Lookup </code> (Verbinden mit anderen Sammlungen - später erörtert. Abfragen? Hier sind einige häufige Anwendungsfälle: <ul> <li> <strong> Echtzeitanalysen: </strong> Aggregationen können Streaming-Daten verarbeiten, um sofortige Einblicke in Trends und Muster zu liefern. Zum Beispiel verfolgen Sie den Website-Verkehr in Echtzeit- oder Überwachungssensordaten. Dies kann die Berechnung von Gesamtzahl, Durchschnittswerten oder Verhältnissen basierend auf anderen Feldern beinhalten. Aggregationen können Daten gruppieren, Aggregate berechnen und die Ergebnisse für den einfachen Verbrauch formatieren. Operatoren. </li> <li> <strong> Aufbau komplexer analytischer Abfragen: </strong> Vorgänge wie Berechnung von beweglichen Durchschnittswerten, Perzentilen oder anderen statistischen Maßnahmen. Hier sind einige Schlüsselstrategien: <ul> <li> <strong> Indexierung: </strong> Stellen Sie sicher, dass geeignete Indizes auf Feldern erstellt werden, die in <code> $ Match </code>, <code> $ sortiert </code>, <code> $ gruppe </code> und <code> $ Lookup </code> Stages verwendet werden. Die Indizes beschleunigen das Abrufen von Daten erheblich. Dies reduziert die Datenmenge, die durch nachfolgende Stadien verarbeitet werden. Versuchen Sie, Operationen nach Möglichkeit zu konsolidieren. Beispielsweise ist <code> $ sum </code> im Allgemeinen schneller als <code> $ record </code> für das Summieren von Werten. Die gemeinsame Sammlung verfügt über einen geeigneten Index im Join -Feld. Erwägen Sie <code> $ Lookup </code> mit <code> let </code> und <code> Pipeline </code> für komplexe Verbindungsbedingungen. <code> db.collection.aggregate (...). erklären () </code> Methode zur Analyse des Ausführungsplans und zur Identifizierung potenzieller Engpässe. <code> $ Lookup </code> Stufe. <code> $ Lookup </code> führt einen linken äußeren Join durch, wodurch Daten aus einer anderen Sammlung basierend auf einer bestimmten Join -Bedingung eingebracht werden. : 1, "Name" "" : "John Doe & quot; } {& quot; _id & quot; : 2, "Name" & quot; : "Jane Smith & quot; } // Bestellungen Sammlung {& quot; _id & quot; : 101, & quot; customer_id & quot; : 1, "Betrag" & quot; : 100} {& quot; _id & quot; : 102, & quot; customer_id & quot; : 1, "Betrag" & quot; : 200} {& quot; _id & quot; : 103, & quot; customer_id & quot; : 2, "Betrag" & quot; : 50} </li> </ul> </li> </ul></code>
Um Kundeninformationen zusammen mit ihren Bestellungen abzurufen, verwenden Sie die folgende Aggregationspipeline:
<code class="javaScript"> db.customer.aggregate ([$ Lookup: {from: & quot; örtlich; & quot; Bestellungen & quot;}}]) </code>
Diese Pipeline verbindet Kunden
und Bestellungen
basierend auf dem Feld _id
in CODE> und <code> CODE> Feld
ordnungsbedingungen . Das Ergebnis enthält die Informationen des Kunden und ein Array ihrer zugehörigen Bestellungen im Feld Bestellungen
. Denken Sie daran, Indizes für das Feld _id
in Kunden
und customer_id
in Bestellungen
für optimale Leistung zu erstellen. Komplexere Verbindungsbedingungen können mit den Optionen LET
und Pipeline
in der Phase $ Lookup
erreicht werden.
Das obige ist der detaillierte Inhalt vonWie verwende ich das Aggregationsrahmen in MongoDB für komplexe Datenumwandlungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!