All language subtitles for 026 Aggregation Middleware_Downloadly.ir_en

af Afrikaans
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bn Bengali
bs Bosnian
bg Bulgarian
ca Catalan
ceb Cebuano
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
tl Filipino
fi Finnish
fr French
fy Frisian
gl Galician
ka Georgian
de German
el Greek
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
km Khmer
ko Korean
ku Kurdish (Kurmanji)
ky Kyrgyz
lo Lao
la Latin
lv Latvian
lt Lithuanian
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mn Mongolian
my Myanmar (Burmese)
ne Nepali
no Norwegian
ps Pashto
fa Persian Download
pl Polish
pt Portuguese
pa Punjabi
ro Romanian
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
st Sesotho
sn Shona
sd Sindhi
si Sinhala
sk Slovak
sl Slovenian
so Somali
es Spanish
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
te Telugu
th Thai
tr Turkish
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
or Odia (Oriya)
rw Kinyarwanda
tk Turkmen
tt Tatar
ug Uyghur
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:00,940 --> 00:00:02,719 So we learned about Document 2 00:00:02,719 --> 00:00:05,860 and query middleware, and now the last middleware 3 00:00:05,860 --> 00:00:09,033 that we're gonna talk about is aggregation middleware, 4 00:00:10,560 --> 00:00:12,253 and as you can probably guess, 5 00:00:13,168 --> 00:00:14,930 aggregation middleware allows us to add hooks 6 00:00:14,930 --> 00:00:18,350 before or after an aggregation happens, 7 00:00:18,350 --> 00:00:19,970 and so let's now actually continue with 8 00:00:19,970 --> 00:00:23,830 our previous example where we did hide the secret tours 9 00:00:23,830 --> 00:00:27,540 from the queries, now in an aggregation the secret tours 10 00:00:27,540 --> 00:00:30,270 are still being used, right? 11 00:00:30,270 --> 00:00:32,220 So let's quickly confirm that actually, 12 00:00:33,840 --> 00:00:37,290 for example here in our gets tour stats, 13 00:00:37,290 --> 00:00:39,940 so that's where we used the first aggregation 14 00:00:39,940 --> 00:00:42,700 and so you see we have four tours here, 15 00:00:42,700 --> 00:00:45,500 four in easy, and three in medium 16 00:00:45,500 --> 00:00:49,060 and so that makes 11 but we already know 17 00:00:49,060 --> 00:00:52,480 that we actually only want 10 tours. 18 00:00:52,480 --> 00:00:55,380 So there are 10 tours that are not secret, 19 00:00:55,380 --> 00:00:58,900 and one that is secret, and so now we get all these 20 00:00:58,900 --> 00:01:01,880 11 tours here and so basically we also want 21 00:01:01,880 --> 00:01:05,000 to exclude the secret tour in the aggregation. 22 00:01:05,000 --> 00:01:06,373 So how could we do that? 23 00:01:07,430 --> 00:01:09,680 Well let's take a look at where our aggregation 24 00:01:09,680 --> 00:01:14,680 is actually happening so it's down here in yeah, 25 00:01:14,900 --> 00:01:19,270 so in get tour steps, and so what we could do is to here 26 00:01:19,270 --> 00:01:22,640 in this match state simply exclude the secret tours 27 00:01:22,640 --> 00:01:24,520 that are true right? 28 00:01:24,520 --> 00:01:26,740 So that would be quite easy to add here, 29 00:01:26,740 --> 00:01:29,080 but then we would have to add the same thing 30 00:01:29,080 --> 00:01:32,080 down here in the other aggregation that we have, 31 00:01:32,080 --> 00:01:34,680 and if we had even more aggregations we would then 32 00:01:34,680 --> 00:01:37,860 have to add that in all of them and that's of course 33 00:01:37,860 --> 00:01:40,560 not a good idea, because for example we could forget 34 00:01:40,560 --> 00:01:44,010 to do it and it's also just repetitive code 35 00:01:44,010 --> 00:01:48,820 and so let's simply exclude it right at the model level, 36 00:01:48,820 --> 00:01:53,280 alright so let's add aggregation middleware here 37 00:01:54,470 --> 00:01:55,893 starting with a comment. 38 00:01:59,450 --> 00:02:03,970 So aggregation middleware and so just like before 39 00:02:05,070 --> 00:02:10,039 we have tourSchema.pre so we want this to happen before 40 00:02:10,039 --> 00:02:12,110 the aggregation is actually executed 41 00:02:13,060 --> 00:02:16,573 and so here we use the aggregate hook. 42 00:02:18,230 --> 00:02:22,047 Alright and then our function which again accepts 43 00:02:22,047 --> 00:02:26,332 the next function so calling the next middleware. 44 00:02:26,332 --> 00:02:31,332 Alright, so let's start by taking a look 45 00:02:32,530 --> 00:02:37,113 at this, so remember that up here in query middleware 46 00:02:37,113 --> 00:02:40,283 that this object points to the current query. 47 00:02:41,130 --> 00:02:44,590 Then here in document middleware the this object 48 00:02:44,590 --> 00:02:46,850 points to the current document, 49 00:02:46,850 --> 00:02:50,330 and so down here in aggregation middleware 50 00:02:50,330 --> 00:02:53,880 this is going to point to the current aggregation object. 51 00:02:53,880 --> 00:02:56,764 Okay and so let's take a look at that in the console 52 00:02:56,764 --> 00:03:00,113 but before that let me just remove this log here. 53 00:03:01,590 --> 00:03:05,890 Alright give it a save, run this aggregation here 54 00:03:08,520 --> 00:03:12,520 and that's taking a lot of time and so let's cancel it 55 00:03:13,750 --> 00:03:16,580 and go back and that's probably because 56 00:03:16,580 --> 00:03:21,460 we're not calling next here, and so like we already know 57 00:03:21,460 --> 00:03:23,580 we get stuck in the middleware function 58 00:03:23,580 --> 00:03:26,340 and so that's not good. 59 00:03:26,340 --> 00:03:29,063 So let's try that again now send, 60 00:03:30,120 --> 00:03:33,490 and yeah so now we're back and now let's take a look 61 00:03:33,490 --> 00:03:35,470 at the aggregation object. 62 00:03:35,470 --> 00:03:37,700 Okay so there's a lot of stuff in here 63 00:03:39,980 --> 00:03:43,800 so it's not really interesting here 64 00:03:44,950 --> 00:03:48,330 and I cannot really find what I'm trying to show you here 65 00:03:48,330 --> 00:03:53,330 and so let's simply add this.pipeline okay because what 66 00:03:53,450 --> 00:03:57,140 I really wanted to show you is just the pipeline object. 67 00:03:57,140 --> 00:04:00,620 Okay, and actually it's pipeline like this 68 00:04:00,620 --> 00:04:03,053 so it's actually a function, a method. 69 00:04:04,970 --> 00:04:06,593 So let's clear the console here. 70 00:04:07,820 --> 00:04:12,820 Try this again, and so here we get the aggregation pipeline, 71 00:04:14,350 --> 00:04:17,620 and so that's simply the array that we passed into 72 00:04:17,620 --> 00:04:19,769 the aggregate function before. 73 00:04:19,769 --> 00:04:23,040 Right, so let's take a look and so here we have 74 00:04:23,040 --> 00:04:26,400 that array, this one not this one. 75 00:04:26,400 --> 00:04:28,200 So we have the match to group 76 00:04:28,200 --> 00:04:30,910 and then the sort so if we take a look here 77 00:04:30,910 --> 00:04:34,470 at the console we have indeed our match with the ratings 78 00:04:34,470 --> 00:04:37,320 average we have group and then sort. 79 00:04:37,320 --> 00:04:41,020 So that is exactly the pipeline we specified before, 80 00:04:41,020 --> 00:04:44,570 and so now in order to filter out the secret tours 81 00:04:44,570 --> 00:04:47,970 all we have to do is to add another match stage 82 00:04:47,970 --> 00:04:50,700 right at the beginning of this pipeline array, 83 00:04:50,700 --> 00:04:53,713 right and so let's do just that. 84 00:04:55,029 --> 00:04:58,040 So let's do that here before this log, 85 00:04:58,040 --> 00:05:03,040 so this.pipeline and remember that this is an array 86 00:05:03,890 --> 00:05:06,130 and how do we add an element at the beginning 87 00:05:06,130 --> 00:05:06,963 of an array? 88 00:05:08,262 --> 00:05:11,510 We use unshift and so that is a standard JavaScript 89 00:05:11,510 --> 00:05:15,340 method for arrays okay, we have also shift to add 90 00:05:15,340 --> 00:05:18,470 at the end of the array and unshift at the beginning 91 00:05:18,470 --> 00:05:21,690 of the array, and so again what we want to add here now 92 00:05:21,690 --> 00:05:25,490 is to add just another stage, so very similar 93 00:05:25,490 --> 00:05:26,803 to what we have down here. 94 00:05:29,690 --> 00:05:34,690 So match and then secretTour, not equal to true. 95 00:05:40,460 --> 00:05:45,340 Give it a save, and so this piece of code here basically 96 00:05:45,340 --> 00:05:48,330 is exactly what we have up here right? 97 00:05:48,330 --> 00:05:51,220 Basically removing from the output all the documents 98 00:05:51,220 --> 00:05:55,260 that have secretTour set to true, right? 99 00:05:55,260 --> 00:06:00,160 So if you give it a save now, then let's check this out, 100 00:06:00,160 --> 00:06:03,250 and remember we have now 11 tours, four, four, 101 00:06:03,250 --> 00:06:06,780 and three so let's check the result afterwards 102 00:06:06,780 --> 00:06:10,340 and so now indeed one of the difficult yours is gone 103 00:06:10,340 --> 00:06:13,460 so we only now have three difficult tours meaning 104 00:06:13,460 --> 00:06:15,930 that we are back to just having 10. 105 00:06:15,930 --> 00:06:20,260 Okay and actually we can confirm that our super secret tour 106 00:06:20,260 --> 00:06:24,630 was a difficult tour, alright and so that is now gone 107 00:06:24,630 --> 00:06:27,700 and so our results are now only about the regular 108 00:06:27,700 --> 00:06:30,800 non-secret tours alright? 109 00:06:30,800 --> 00:06:34,670 And we can again take a look at our aggregation pipeline now 110 00:06:34,670 --> 00:06:38,640 and here you see that now we have these two matched stages. 111 00:06:38,640 --> 00:06:41,150 Great and as I mentioned before it's no problem 112 00:06:41,150 --> 00:06:45,050 to repeat these stages, we can have as many match stages 113 00:06:45,050 --> 00:06:49,920 as we want, okay and that's it for aggregation middleware. 114 00:06:49,920 --> 00:06:53,740 I'm not gonna include any post code here for middleware 115 00:06:53,740 --> 00:06:56,290 that's not really necessary alright, 116 00:06:56,290 --> 00:06:59,050 and I'm also not gonna talk about model middleware here 117 00:06:59,050 --> 00:07:01,570 because it's really not that important. 118 00:07:01,570 --> 00:07:04,750 Alright, so middleware is some really cool 119 00:07:04,750 --> 00:07:08,180 and important stuff that we can add to our models, 120 00:07:08,180 --> 00:07:10,560 and there is indeed other cool stuff 121 00:07:10,560 --> 00:07:13,430 that we can do with models, for example implementing 122 00:07:13,430 --> 00:07:16,690 instance methods which are methods that will be available 123 00:07:16,690 --> 00:07:19,220 on ever document after being queried, 124 00:07:19,220 --> 00:07:21,410 and that again can be quite handy, 125 00:07:21,410 --> 00:07:23,402 and we will do that later 126 00:07:23,402 --> 00:07:25,570 in the authentication section as well okay. 127 00:07:25,570 --> 00:07:27,940 So I'm gonna leave that for a bit later, 128 00:07:27,940 --> 00:07:30,110 now what we are gonna do in this section 129 00:07:30,110 --> 00:07:34,170 just to finish is to actually add some validation, alright 130 00:07:34,170 --> 00:07:37,070 and so in the next two videos we're gonna talk about that. 10866

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.