‫Jonas: Wir haben also
‫etwas über Dokument- und Abfrage-Middleware gelernt,
‫und jetzt wird die letzte Middleware,
‫über die wir
‫sprechen werden, Aggregations-Middleware
‫Fahren wir nun mit unserem vorherigen Beispiel
‫fort, in
‫dem wir die geheimen Touren aus den Abfragen
‫ausgeblendet haben, jetzt werden die geheimen Touren in
‫einer Aggregation immer noch verwendet, oder?
‫Lassen Sie uns das
‫also schnell bestätigen, zum Beispiel hier in unseren Get-Tour-Statistiken,
‫also haben wir die erste Aggregation
‫verwendet und Sie sehen, wir haben hier
‫vier Touren, vier in leicht und drei
‫in mittel und das macht also 11, aber wir
‫schon wissen, dass wir eigentlich nur 10 Touren wollen.
‫Es gibt also 10 Touren, die nicht geheim
‫sind, und eine, die geheim ist, und so bekommen wir jetzt
‫alle diese 11 Touren hier und so wollen wir
‫im Grunde auch die geheime Tour in der Aggregation ausschließen.
‫Wie könnten wir das also tun?
‫Nun, lass uns einen Blick
‫darauf werfen, wo unsere Aggregation tatsächlich stattfindet, also hier unten in ja,
‫also in Tour-Schritten, und was wir also tun könnten, ist hier
‫in diesem Match-Zustand einfach die geheimen Touren auszuschließen,
‫die wahr sind, oder?
‫Das wäre hier also ganz
‫einfach hinzuzufügen, aber dann müssten wir
‫das Gleiche hier unten in der anderen Aggregation
‫hinzufügen, die wir haben, und wenn wir
‫noch mehr Aggregationen hätten, müssten wir das in allen
‫hinzufügen und das ist natürlich keine gute
‫Idee, denn zum Beispiel könnten wir vergessen, es zu
‫tun und es ist auch nur sich wiederholender Code, also schließen wir ihn
‫einfach direkt auf Modellebene aus, also fügen wir hier Aggregations-Middleware beginnend mit
‫einem Kommentar hinzu.
‫Also Aggregations-Middleware und so wie vorher
‫haben wir tourSchema. pre, also möchten wir, dass dies
‫geschieht, bevor die Aggregation
‫tatsächlich ausgeführt wird, und verwenden hier den Aggregat-Hook.
‫Okay und dann unsere Funktion, die wieder die
‫nächste Funktion akzeptiert und so die nächste Middleware aufruft.
‫In Ordnung, also fangen wir damit an, einen Blick darauf zu werfen.
‫Denken Sie also daran, dass dieses Objekt hier oben in der
‫Abfrage-Middleware auf die aktuelle Abfrage verweist.
‫Dann zeigt das this-Objekt hier in der
‫Dokument-Middleware auf das aktuelle
‫Dokument, und hier unten in der Aggregations-Middleware
‫wird dies auf das aktuelle Aggregationsobjekt zeigen.
‫Okay, schauen wir uns das in der
‫Konsole an, aber vorher möchte ich dieses Protokoll hier entfernen.
‫Okay, speichern Sie es, führen Sie diese Aggregation hier aus und
‫das dauert viel Zeit, also brechen wir sie ab und
‫gehen zurück und das liegt wahrscheinlich daran,
‫dass wir hier nicht als nächstes anrufen, und wie wir bereits wissen,
‫bleiben wir in der
‫Middleware-Funktion stecken und das ist nicht gut.
‫Versuchen wir es jetzt noch einmal send,
‫und ja, jetzt sind wir zurück und schauen wir
‫uns nun das Aggregationsobjekt an.
‫Okay, es gibt eine Menge
‫Zeug hier, also ist es hier nicht wirklich interessant und ich
‫kann nicht wirklich finden, was ich Ihnen hier zeigen
‫möchte, also fügen wir dies einfach hinzu. Pipeline okay, denn was ich
‫Ihnen wirklich zeigen wollte, ist nur das Pipeline-Objekt.
‫Okay, und eigentlich ist es eine Pipeline wie diese,
‫also eigentlich eine Funktion, eine Methode.
‫Also lass uns die Konsole hier löschen.
‫Versuchen Sie es noch einmal, und hier erhalten wir die Aggregationspipeline, und
‫das ist einfach das Array, das wir zuvor
‫an die Aggregatfunktion übergeben haben.
‫Also lasst uns einen Blick darauf werfen
‫und hier haben wir dieses Array, dieses nicht dieses.
‫Wir haben also die Übereinstimmung
‫mit der Gruppe und dann die Sortierung. Wenn
‫wir uns also hier die Konsole ansehen, haben wir tatsächlich unsere Übereinstimmung
‫mit dem Bewertungsdurchschnitt, den wir gruppieren und dann sortieren.
‫Das ist also genau die Pipeline, die wir zuvor
‫angegeben haben, und um die geheimen Touren herauszufiltern,
‫müssen wir jetzt nur noch eine Match-Phase direkt
‫am Anfang dieses Pipeline-Arrays hinzufügen,
‫richtig, und dann machen wir genau das.
‫Also lass uns das hier vor diesem
‫Log machen, also das. Pipeline und denken Sie daran, dass dies ein Array ist
‫und wie fügen wir ein Element am Anfang eines
‫Arrays hinzu?
‫Wir verwenden unshift und das ist eine
‫Standard-JavaScript-Methode für Arrays, okay, wir haben auch Shift zum
‫Hinzufügen am Ende des Arrays und
‫Unshift am Anfang des Arrays eine weitere
‫Bühne, die dem, was wir hier unten haben, sehr
‫ähnlich ist.
‫Also match und dann secretTour, nicht gleich true.
‫Speichern Sie es, und dieses Stück Code hier ist im Grunde genau
‫das, was wir hier oben haben, oder?
‫Grundsätzlich werden alle Dokumente aus der
‫Ausgabe entfernt, bei denen secretTour auf true gesetzt ist, oder?
‫Also, wenn Sie jetzt sparen, dann schauen wir uns das an und denken Sie
‫daran, dass wir jetzt 11 Touren haben, vier,
‫vier und drei, also lassen Sie uns das Ergebnis später
‫überprüfen und jetzt ist tatsächlich eine Ihrer schwierigen verschwunden, also
‫wir erst jetzt haben drei schwierige Touren, was bedeutet,
‫dass wir wieder nur 10 haben.
‫Okay und eigentlich können wir bestätigen, dass unsere supergeheime Tour eine
‫schwierige Tour war, in Ordnung und damit ist das jetzt weg
‫und unsere Ergebnisse beziehen sich jetzt nur
‫noch auf die regulären nicht-geheimen Touren, in Ordnung?
‫Und wir können jetzt noch einmal einen Blick auf unsere Aggregationspipeline werfen
‫und hier sehen Sie, dass wir jetzt diese beiden aufeinander abgestimmten Phasen haben.
‫Großartig und wie ich bereits erwähnt
‫habe, ist es kein Problem, diese Phasen zu wiederholen. Wir können
‫so viele Match-Phasen haben, wie wir möchten, okay, und das war's für die Aggregations-Middleware.
‫Ich werde hier keine Postleitzahl für Middleware angeben, die nicht
‫wirklich notwendig ist, und ich werde hier
‫auch nicht über Modell-Middleware sprechen, weil es
‫wirklich nicht so wichtig ist.
‫Okay, Middleware ist also einige wirklich coole und wichtige Dinge,
‫die wir zu unseren Modellen hinzufügen können, und es gibt
‫tatsächlich noch andere coole Dinge, die wir
‫mit Modellen machen können, zum Beispiel die Implementierung
‫von Instanzmethoden, die Methoden sind, die nach ihrer Erstellung in
‫jedem Dokument verfügbar sind abgefragt, und das
‫kann wieder ganz praktisch sein, und
‫das werden wir später im
‫Abschnitt zur Authentifizierung auch tun, okay.
‫Also lasse ich das etwas später, was
‫wir in diesem Abschnitt jetzt
‫zum Abschluss tun werden, ist tatsächlich eine Bestätigung hinzuzufügen, in Ordnung, und
‫in den nächsten beiden Videos werden wir darüber sprechen.