Das beste MongoDB Polymerisation-Tutorial im Jahr 2024. In diesem Tutorial können Sie Aggregat () Methode,Das Konzept der Pipeline, lernen
MongoDB polymerisiert (Aggregat) vor allem für die Verarbeitung der Daten (wie zum Beispiel statistische Mittelwerte, Summen, etc.), und gibt das Ergebnis der berechneten Daten. Etwas ähnlich SQL-Anweisung count (*).
MongoDB Polymerisationsverfahren verwendet Aggregat ().
Die grundlegende Syntax Aggregat () Methode ist wie folgt:
>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
Datensammlung ist wie folgt:
{ _id: ObjectId(7df78ad8902c) title: 'MongoDB Overview', description: 'MongoDB is no sql database', by_user: 'w3cschool.cc', url: '', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 }, { _id: ObjectId(7df78ad8902d) title: 'NoSQL Overview', description: 'No sql database is very fast', by_user: 'w3cschool.cc', url: '', tags: ['mongodb', 'database', 'NoSQL'], likes: 10 }, { _id: ObjectId(7df78ad8902e) title: 'Neo4j Overview', description: 'Neo4j is no sql database', by_user: 'Neo4j', url: 'http://www.neo4j.com', tags: ['neo4j', 'database', 'NoSQL'], likes: 750 },
Nun setzen wir über die für jede der Anzahl der Artikel geschrieben von Autoren berechnet wird Aggregat () wie folgt berechnet:
> db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}]) { "result" : [ { "_id" : "w3cschool.cc", "num_tutorial" : 2 }, { "_id" : "Neo4j", "num_tutorial" : 1 } ], "ok" : 1 } >
Ähnliche Beispiele oben SQL - Anweisung: select by_user, count (*) aus mycol Gruppe von by_user
In dem obigen Beispiel by_user wir Feld für Feld zu gruppieren, die Daten und berechnet die Summe aus dem gleichen Wert by_user Feld.
Die folgende Tabelle zeigt einige Aggregations Ausdruck:
Ausdruck | Beschreibung | Beispiele |
---|---|---|
$ Sum | Berechnen Sie die Summe. | db.mycol.aggregate ([{$ group: {_id: "$ by_user", num_tutorial: {$ Summe: "$ mag"}}}]) |
$ Avg | Die Berechnung der durchschnittlichen | db.mycol.aggregate ([{$ group: {_id: "$ by_user", num_tutorial: {$ avg: "$ mag"}}}]) |
$ Min | Ruft eine Auflistung aller Dokumente im Wert von mindestens entsprechen. | db.mycol.aggregate ([{$ group: {_id: "$ by_user", num_tutorial: {$ min: "$ mag"}}}]) |
$ Max | Ruft eine Auflistung aller Dokumente zu dem maximalen Wert entspricht. | db.mycol.aggregate ([{$ group: {_id: "$ by_user", num_tutorial: {$ max: "$ mag"}}}]) |
$ Drücken | In dem resultierenden Dokument einen Wert in ein Feld einzufügen. | db.mycol.aggregate ([{$ group: {_id: "$ by_user", URL: {$ Push: "$ url"}}}]) |
$ AddToSet | In dem resultierenden Dokument einen Wert in ein Array eingefügt werden, aber schafft keine Kopie. | db.mycol.aggregate ([{$ group: {_id: "$ by_user", URL: {$ addToSet: "$ url"}}}]) |
$ Erste | Als die ersten Dokumentdaten gemäß den Sortier Ressource Dokumente. | db.mycol.aggregate ([{$ group: {_id: "$ by_user", first_url: {$ first: "$ url"}}}]) |
$ Last | Ruft die letzte Dokumentdaten entsprechend der Art Ressource Dokumente | db.mycol.aggregate ([{$ group: {_id: "$ by_user", last_url: {$ zuletzt: "$ url"}}}]) |
Rohre in Unix und Linux im allgemeinen wird die Ausgabe des Strombefehls als einen Parameter auf den nächsten Befehl verwendet wird.
MongoDB MongoDB Dokument polymere Rohr im Rohr nach einem verarbeiteten Ergebnis auf die nächste Pipeline-Verarbeitung. Pipeline-Operation kann wiederholt werden.
Expression: Verarbeiten von Eingabe- und Ausgabedokumente. Ausdrücke staatenlos sind, können nur die aktuellen Pipeline von aggregierten Dokumente zur Berechnung verwendet werden, können Sie nicht mit anderen Dokumenten beschäftigen.
Hier stellen wir die Aggregation Rahmen häufig in mehreren Operationen verwendet:
1, $ Projektbeispiele
db.article.aggregate( { $project : { title : 1 , author : 1 , }} );
In diesem Fall wird nur dort die Ergebnisse würden _id, tilte und Autor von drei Feldern, die Standard _id Feld aufgenommen zu werden, wenn der Auftrag, wenn es sein kann, enthalten nicht _ID:
db.article.aggregate( { $project : { _id : 0 , title : 1 , author : 1 }});
2. $ passen Beispiele
db.articles.aggregate( [ { $match : { score : { $gt : 70, $lte : 90 } } }, { $group: { _id: null, count: { $sum: 1 } } } ] );
$ Spiel wird eine Punktzahl von mehr als 70 zu erhalten, ist weniger als oder gleich 90 Datensätze, dann sind die entsprechenden Datensätze in die nächste Stufe der Pipeline-Betreiber $ Gruppe für die Verarbeitung.
3. $ überspringen Instanz
db.article.aggregate( { $skip : 5 });
Nach einer Verarbeitung Pipeline-Betreiber $ skip werden die ersten fünf Dokumente "gefiltert" werden.