Heim > Datenbank > MongoDB > Wie verwende ich das Aggregationsrahmen in MongoDB für komplexe Datenumwandlungen?

Wie verwende ich das Aggregationsrahmen in MongoDB für komplexe Datenumwandlungen?

Robert Michael Kim
Freigeben: 2025-03-11 18:07:08
Original
249 Leute haben es durchsucht

So verwenden Sie das MongoDB -Aggregations -Framework für komplexe Datentransformationen

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>
Nach dem Login kopieren

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> 
Nach dem Login kopieren

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> 
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage