﻿1
00:00:00,940 --> 00:00:02,720
‫Jonas: Wir haben also

2
00:00:02,720 --> 00:00:05,860
‫etwas über Dokument- und Abfrage-Middleware gelernt,

3
00:00:05,860 --> 00:00:09,033
‫und jetzt wird die letzte Middleware,

4
00:00:10,560 --> 00:00:12,253
‫über die wir

5
00:00:13,168 --> 00:00:14,930
‫sprechen werden, Aggregations-Middleware

6
00:00:14,930 --> 00:00:18,350
‫Fahren wir nun mit unserem vorherigen Beispiel

7
00:00:18,350 --> 00:00:19,970
‫fort, in

8
00:00:19,970 --> 00:00:23,830
‫dem wir die geheimen Touren aus den Abfragen

9
00:00:23,830 --> 00:00:27,540
‫ausgeblendet haben, jetzt werden die geheimen Touren in

10
00:00:27,540 --> 00:00:30,270
‫einer Aggregation immer noch verwendet, oder?

11
00:00:30,270 --> 00:00:32,220
‫Lassen Sie uns das

12
00:00:33,840 --> 00:00:37,290
‫also schnell bestätigen, zum Beispiel hier in unseren Get-Tour-Statistiken,

13
00:00:37,290 --> 00:00:39,940
‫also haben wir die erste Aggregation

14
00:00:39,940 --> 00:00:42,700
‫verwendet und Sie sehen, wir haben hier

15
00:00:42,700 --> 00:00:45,500
‫vier Touren, vier in leicht und drei

16
00:00:45,500 --> 00:00:49,060
‫in mittel und das macht also 11, aber wir

17
00:00:49,060 --> 00:00:52,480
‫schon wissen, dass wir eigentlich nur 10 Touren wollen.

18
00:00:52,480 --> 00:00:55,380
‫Es gibt also 10 Touren, die nicht geheim

19
00:00:55,380 --> 00:00:58,900
‫sind, und eine, die geheim ist, und so bekommen wir jetzt

20
00:00:58,900 --> 00:01:01,880
‫alle diese 11 Touren hier und so wollen wir

21
00:01:01,880 --> 00:01:05,000
‫im Grunde auch die geheime Tour in der Aggregation ausschließen.

22
00:01:05,000 --> 00:01:06,373
‫Wie könnten wir das also tun?

23
00:01:07,430 --> 00:01:09,680
‫Nun, lass uns einen Blick

24
00:01:09,680 --> 00:01:14,680
‫darauf werfen, wo unsere Aggregation tatsächlich stattfindet, also hier unten in ja,

25
00:01:14,900 --> 00:01:19,270
‫also in Tour-Schritten, und was wir also tun könnten, ist hier

26
00:01:19,270 --> 00:01:22,640
‫in diesem Match-Zustand einfach die geheimen Touren auszuschließen,

27
00:01:22,640 --> 00:01:24,520
‫die wahr sind, oder?

28
00:01:24,520 --> 00:01:26,740
‫Das wäre hier also ganz

29
00:01:26,740 --> 00:01:29,080
‫einfach hinzuzufügen, aber dann müssten wir

30
00:01:29,080 --> 00:01:32,080
‫das Gleiche hier unten in der anderen Aggregation

31
00:01:32,080 --> 00:01:34,680
‫hinzufügen, die wir haben, und wenn wir

32
00:01:34,680 --> 00:01:37,860
‫noch mehr Aggregationen hätten, müssten wir das in allen

33
00:01:37,860 --> 00:01:40,560
‫hinzufügen und das ist natürlich keine gute

34
00:01:40,560 --> 00:01:44,010
‫Idee, denn zum Beispiel könnten wir vergessen, es zu

35
00:01:44,010 --> 00:01:48,820
‫tun und es ist auch nur sich wiederholender Code, also schließen wir ihn

36
00:01:48,820 --> 00:01:53,280
‫einfach direkt auf Modellebene aus, also fügen wir hier Aggregations-Middleware beginnend mit

37
00:01:54,470 --> 00:01:55,893
‫einem Kommentar hinzu.

38
00:01:59,450 --> 00:02:03,970
‫Also Aggregations-Middleware und so wie vorher

39
00:02:05,070 --> 00:02:10,040
‫haben wir tourSchema. pre, also möchten wir, dass dies

40
00:02:10,040 --> 00:02:12,110
‫geschieht, bevor die Aggregation

41
00:02:13,060 --> 00:02:16,573
‫tatsächlich ausgeführt wird, und verwenden hier den Aggregat-Hook.

42
00:02:18,230 --> 00:02:22,047
‫Okay und dann unsere Funktion, die wieder die

43
00:02:22,047 --> 00:02:26,332
‫nächste Funktion akzeptiert und so die nächste Middleware aufruft.

44
00:02:26,332 --> 00:02:31,332
‫In Ordnung, also fangen wir damit an, einen Blick darauf zu werfen.

45
00:02:32,530 --> 00:02:37,113
‫Denken Sie also daran, dass dieses Objekt hier oben in der

46
00:02:37,113 --> 00:02:40,283
‫Abfrage-Middleware auf die aktuelle Abfrage verweist.

47
00:02:41,130 --> 00:02:44,590
‫Dann zeigt das this-Objekt hier in der

48
00:02:44,590 --> 00:02:46,850
‫Dokument-Middleware auf das aktuelle

49
00:02:46,850 --> 00:02:50,330
‫Dokument, und hier unten in der Aggregations-Middleware

50
00:02:50,330 --> 00:02:53,880
‫wird dies auf das aktuelle Aggregationsobjekt zeigen.

51
00:02:53,880 --> 00:02:56,764
‫Okay, schauen wir uns das in der

52
00:02:56,764 --> 00:03:00,113
‫Konsole an, aber vorher möchte ich dieses Protokoll hier entfernen.

53
00:03:01,590 --> 00:03:05,890
‫Okay, speichern Sie es, führen Sie diese Aggregation hier aus und

54
00:03:08,520 --> 00:03:12,520
‫das dauert viel Zeit, also brechen wir sie ab und

55
00:03:13,750 --> 00:03:16,580
‫gehen zurück und das liegt wahrscheinlich daran,

56
00:03:16,580 --> 00:03:21,460
‫dass wir hier nicht als nächstes anrufen, und wie wir bereits wissen,

57
00:03:21,460 --> 00:03:23,580
‫bleiben wir in der

58
00:03:23,580 --> 00:03:26,340
‫Middleware-Funktion stecken und das ist nicht gut.

59
00:03:26,340 --> 00:03:29,063
‫Versuchen wir es jetzt noch einmal send,

60
00:03:30,120 --> 00:03:33,490
‫und ja, jetzt sind wir zurück und schauen wir

61
00:03:33,490 --> 00:03:35,470
‫uns nun das Aggregationsobjekt an.

62
00:03:35,470 --> 00:03:37,700
‫Okay, es gibt eine Menge

63
00:03:39,980 --> 00:03:43,800
‫Zeug hier, also ist es hier nicht wirklich interessant und ich

64
00:03:44,950 --> 00:03:48,330
‫kann nicht wirklich finden, was ich Ihnen hier zeigen

65
00:03:48,330 --> 00:03:53,330
‫möchte, also fügen wir dies einfach hinzu. Pipeline okay, denn was ich

66
00:03:53,450 --> 00:03:57,140
‫Ihnen wirklich zeigen wollte, ist nur das Pipeline-Objekt.

67
00:03:57,140 --> 00:04:00,620
‫Okay, und eigentlich ist es eine Pipeline wie diese,

68
00:04:00,620 --> 00:04:03,053
‫also eigentlich eine Funktion, eine Methode.

69
00:04:04,970 --> 00:04:06,593
‫Also lass uns die Konsole hier löschen.

70
00:04:07,820 --> 00:04:12,820
‫Versuchen Sie es noch einmal, und hier erhalten wir die Aggregationspipeline, und

71
00:04:14,350 --> 00:04:17,620
‫das ist einfach das Array, das wir zuvor

72
00:04:17,620 --> 00:04:19,770
‫an die Aggregatfunktion übergeben haben.

73
00:04:19,770 --> 00:04:23,040
‫Also lasst uns einen Blick darauf werfen

74
00:04:23,040 --> 00:04:26,400
‫und hier haben wir dieses Array, dieses nicht dieses.

75
00:04:26,400 --> 00:04:28,200
‫Wir haben also die Übereinstimmung

76
00:04:28,200 --> 00:04:30,910
‫mit der Gruppe und dann die Sortierung. Wenn

77
00:04:30,910 --> 00:04:34,470
‫wir uns also hier die Konsole ansehen, haben wir tatsächlich unsere Übereinstimmung

78
00:04:34,470 --> 00:04:37,320
‫mit dem Bewertungsdurchschnitt, den wir gruppieren und dann sortieren.

79
00:04:37,320 --> 00:04:41,020
‫Das ist also genau die Pipeline, die wir zuvor

80
00:04:41,020 --> 00:04:44,570
‫angegeben haben, und um die geheimen Touren herauszufiltern,

81
00:04:44,570 --> 00:04:47,970
‫müssen wir jetzt nur noch eine Match-Phase direkt

82
00:04:47,970 --> 00:04:50,700
‫am Anfang dieses Pipeline-Arrays hinzufügen,

83
00:04:50,700 --> 00:04:53,713
‫richtig, und dann machen wir genau das.

84
00:04:55,029 --> 00:04:58,040
‫Also lass uns das hier vor diesem

85
00:04:58,040 --> 00:05:03,040
‫Log machen, also das. Pipeline und denken Sie daran, dass dies ein Array ist

86
00:05:03,890 --> 00:05:06,130
‫und wie fügen wir ein Element am Anfang eines

87
00:05:06,130 --> 00:05:06,963
‫Arrays hinzu?

88
00:05:08,262 --> 00:05:11,510
‫Wir verwenden unshift und das ist eine

89
00:05:11,510 --> 00:05:15,340
‫Standard-JavaScript-Methode für Arrays, okay, wir haben auch Shift zum

90
00:05:15,340 --> 00:05:18,470
‫Hinzufügen am Ende des Arrays und

91
00:05:18,470 --> 00:05:21,690
‫Unshift am Anfang des Arrays eine weitere

92
00:05:21,690 --> 00:05:25,490
‫Bühne, die dem, was wir hier unten haben, sehr

93
00:05:25,490 --> 00:05:26,803
‫ähnlich ist.

94
00:05:29,690 --> 00:05:34,690
‫Also match und dann secretTour, nicht gleich true.

95
00:05:40,460 --> 00:05:45,340
‫Speichern Sie es, und dieses Stück Code hier ist im Grunde genau

96
00:05:45,340 --> 00:05:48,330
‫das, was wir hier oben haben, oder?

97
00:05:48,330 --> 00:05:51,220
‫Grundsätzlich werden alle Dokumente aus der

98
00:05:51,220 --> 00:05:55,260
‫Ausgabe entfernt, bei denen secretTour auf true gesetzt ist, oder?

99
00:05:55,260 --> 00:06:00,160
‫Also, wenn Sie jetzt sparen, dann schauen wir uns das an und denken Sie

100
00:06:00,160 --> 00:06:03,250
‫daran, dass wir jetzt 11 Touren haben, vier,

101
00:06:03,250 --> 00:06:06,780
‫vier und drei, also lassen Sie uns das Ergebnis später

102
00:06:06,780 --> 00:06:10,340
‫überprüfen und jetzt ist tatsächlich eine Ihrer schwierigen verschwunden, also

103
00:06:10,340 --> 00:06:13,460
‫wir erst jetzt haben drei schwierige Touren, was bedeutet,

104
00:06:13,460 --> 00:06:15,930
‫dass wir wieder nur 10 haben.

105
00:06:15,930 --> 00:06:20,260
‫Okay und eigentlich können wir bestätigen, dass unsere supergeheime Tour eine

106
00:06:20,260 --> 00:06:24,630
‫schwierige Tour war, in Ordnung und damit ist das jetzt weg

107
00:06:24,630 --> 00:06:27,700
‫und unsere Ergebnisse beziehen sich jetzt nur

108
00:06:27,700 --> 00:06:30,800
‫noch auf die regulären nicht-geheimen Touren, in Ordnung?

109
00:06:30,800 --> 00:06:34,670
‫Und wir können jetzt noch einmal einen Blick auf unsere Aggregationspipeline werfen

110
00:06:34,670 --> 00:06:38,640
‫und hier sehen Sie, dass wir jetzt diese beiden aufeinander abgestimmten Phasen haben.

111
00:06:38,640 --> 00:06:41,150
‫Großartig und wie ich bereits erwähnt

112
00:06:41,150 --> 00:06:45,050
‫habe, ist es kein Problem, diese Phasen zu wiederholen. Wir können

113
00:06:45,050 --> 00:06:49,920
‫so viele Match-Phasen haben, wie wir möchten, okay, und das war's für die Aggregations-Middleware.

114
00:06:49,920 --> 00:06:53,740
‫Ich werde hier keine Postleitzahl für Middleware angeben, die nicht

115
00:06:53,740 --> 00:06:56,290
‫wirklich notwendig ist, und ich werde hier

116
00:06:56,290 --> 00:06:59,050
‫auch nicht über Modell-Middleware sprechen, weil es

117
00:06:59,050 --> 00:07:01,570
‫wirklich nicht so wichtig ist.

118
00:07:01,570 --> 00:07:04,750
‫Okay, Middleware ist also einige wirklich coole und wichtige Dinge,

119
00:07:04,750 --> 00:07:08,180
‫die wir zu unseren Modellen hinzufügen können, und es gibt

120
00:07:08,180 --> 00:07:10,560
‫tatsächlich noch andere coole Dinge, die wir

121
00:07:10,560 --> 00:07:13,430
‫mit Modellen machen können, zum Beispiel die Implementierung

122
00:07:13,430 --> 00:07:16,690
‫von Instanzmethoden, die Methoden sind, die nach ihrer Erstellung in

123
00:07:16,690 --> 00:07:19,220
‫jedem Dokument verfügbar sind abgefragt, und das

124
00:07:19,220 --> 00:07:21,410
‫kann wieder ganz praktisch sein, und

125
00:07:21,410 --> 00:07:23,402
‫das werden wir später im

126
00:07:23,402 --> 00:07:25,570
‫Abschnitt zur Authentifizierung auch tun, okay.

127
00:07:25,570 --> 00:07:27,940
‫Also lasse ich das etwas später, was

128
00:07:27,940 --> 00:07:30,110
‫wir in diesem Abschnitt jetzt

129
00:07:30,110 --> 00:07:34,170
‫zum Abschluss tun werden, ist tatsächlich eine Bestätigung hinzuzufügen, in Ordnung, und

130
00:07:34,170 --> 00:07:37,070
‫in den nächsten beiden Videos werden wir darüber sprechen.

