All language subtitles for 007 CRUD_ Querying (Reading) Documents_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:01,090 --> 00:00:04,160 Querying for data in a database is one 2 00:00:04,160 --> 00:00:08,320 of the most important operations that we have in databases. 3 00:00:08,320 --> 00:00:11,820 And so, let's now take a look at a couple of query operators 4 00:00:11,820 --> 00:00:14,770 in MongoDB, starting with some simple ones 5 00:00:14,770 --> 00:00:17,993 and then moving on to some really complex queries. 6 00:00:19,610 --> 00:00:23,010 And, to start, let's give ourselves some space here. 7 00:00:23,010 --> 00:00:25,760 And so, you already know, the easiest way 8 00:00:25,760 --> 00:00:28,480 to basically query for all the documents 9 00:00:28,480 --> 00:00:31,470 in a certain collection is to just use find 10 00:00:31,470 --> 00:00:33,560 without passing anything in there. 11 00:00:33,560 --> 00:00:36,130 So, that's what we've been doing until this point. 12 00:00:36,130 --> 00:00:38,570 And so, it gives us simply this result 13 00:00:38,570 --> 00:00:40,040 with all the documents 14 00:00:40,040 --> 00:00:42,110 that are in a certain collection basically 15 00:00:42,110 --> 00:00:44,620 without any searching criteria. 16 00:00:44,620 --> 00:00:47,910 But, now, let's say that we actually only want one tour 17 00:00:47,910 --> 00:00:49,540 and we already know its name. 18 00:00:49,540 --> 00:00:51,610 And so, we can search for that tour 19 00:00:51,610 --> 00:00:54,120 using the name that we know. 20 00:00:54,120 --> 00:00:57,910 And so, we us db.tours 21 00:00:59,150 --> 00:01:00,400 and, again, find. 22 00:01:00,400 --> 00:01:03,573 But, this time, we're gonna pass in a filter object. 23 00:01:04,930 --> 00:01:06,710 So, again, we need an object here. 24 00:01:06,710 --> 00:01:09,580 And so, you start to see now that in MongoDB, 25 00:01:09,580 --> 00:01:12,560 really everything works with objects. 26 00:01:12,560 --> 00:01:15,330 And, this will be even more prominent a bit later 27 00:01:15,330 --> 00:01:16,163 in this lecture. 28 00:01:17,265 --> 00:01:20,790 So, inside this object, we pass in the filter. 29 00:01:20,790 --> 00:01:22,650 So, basically the search criteria 30 00:01:22,650 --> 00:01:25,050 that we want to search for. 31 00:01:25,050 --> 00:01:28,343 So, we simply set the name to the tour name 32 00:01:28,343 --> 00:01:30,570 that we want to search for. 33 00:01:30,570 --> 00:01:32,120 So, let's say The Forest Hiker. 34 00:01:35,040 --> 00:01:36,330 And, that's actually it. 35 00:01:36,330 --> 00:01:39,750 So, that is our search criteria or the search filter. 36 00:01:39,750 --> 00:01:41,260 And, if we had returned now, 37 00:01:41,260 --> 00:01:43,580 then we only get this one tour 38 00:01:43,580 --> 00:01:47,553 where the name matches exactly the one that we passed in. 39 00:01:48,970 --> 00:01:51,830 And, we could do, of course, the same for anything else. 40 00:01:51,830 --> 00:01:53,760 For example, for the difficulty, 41 00:01:53,760 --> 00:01:57,800 we could search for tours 42 00:01:57,800 --> 00:01:59,593 that have an easy in difficulty. 43 00:02:01,890 --> 00:02:06,343 So, difficulty and easy. 44 00:02:07,640 --> 00:02:10,030 Close the object, close the function. 45 00:02:10,030 --> 00:02:13,910 And so, we get all the tours where the difficulty is easy. 46 00:02:13,910 --> 00:02:16,420 Right now, there is only one tour, 47 00:02:16,420 --> 00:02:19,010 but if we had multiple tours with difficulty set 48 00:02:19,010 --> 00:02:20,260 to easy, then, of course, 49 00:02:20,260 --> 00:02:23,020 it would return all of these documents. 50 00:02:23,020 --> 00:02:25,150 So, that is the easiest way 51 00:02:25,150 --> 00:02:27,400 that we can search for documents. 52 00:02:27,400 --> 00:02:29,610 Now, let's take it to the next level 53 00:02:29,610 --> 00:02:32,063 by using some special query operators. 54 00:02:33,100 --> 00:02:36,070 And, what I want to do is to search for tours 55 00:02:36,070 --> 00:02:38,673 which have a price below 500. 56 00:02:40,470 --> 00:02:43,670 And, the way it works is like this. 57 00:02:43,670 --> 00:02:48,670 So, we always use db. The collection name .find. 58 00:02:49,170 --> 00:02:51,670 And then, again, or filter object. 59 00:02:51,670 --> 00:02:54,620 And so, remember, I want to search for prices, 60 00:02:54,620 --> 00:02:56,430 so I say price. 61 00:02:56,430 --> 00:03:00,550 And now, I want all the tours with a price below 500. 62 00:03:00,550 --> 00:03:02,090 So, how do I do that? 63 00:03:02,090 --> 00:03:05,000 Well, I need to use the less than operator 64 00:03:05,000 --> 00:03:06,630 and it works like this. 65 00:03:06,630 --> 00:03:09,080 We need to define yet a new object 66 00:03:09,080 --> 00:03:13,017 where we set the lte property to 500, 67 00:03:15,090 --> 00:03:16,550 then close that object, 68 00:03:16,550 --> 00:03:19,320 and then close that first price object 69 00:03:19,320 --> 00:03:21,410 and then close the function. 70 00:03:21,410 --> 00:03:23,950 So, that looks very weird, I know, 71 00:03:23,950 --> 00:03:27,130 but this is how we use query operators in MongoDB. 72 00:03:27,130 --> 00:03:30,200 So, again, lte stands for less than 73 00:03:30,200 --> 00:03:32,070 because that is what we're searching for. 74 00:03:32,070 --> 00:03:36,140 Where the price is less than 500. 75 00:03:36,140 --> 00:03:38,820 And, this special sign here is reserved in MongoDB 76 00:03:38,820 --> 00:03:40,490 for its operators. 77 00:03:40,490 --> 00:03:43,520 So, whenever you see this dollar sign here in MongoDB, 78 00:03:43,520 --> 00:03:45,933 you know that it's a Mongo operator. 79 00:03:46,900 --> 00:03:48,690 So, the weirdest part here is probably 80 00:03:48,690 --> 00:03:51,430 that we have to do it inside a new object, 81 00:03:51,430 --> 00:03:54,600 but if you think about it, it's actually really the only way 82 00:03:54,600 --> 00:03:58,430 to specify that the price should not simply be 500, 83 00:03:58,430 --> 00:03:59,530 but something else. 84 00:03:59,530 --> 00:04:03,320 So, we have to set the price to something else than 500. 85 00:04:03,320 --> 00:04:04,760 And, the best way really is 86 00:04:04,760 --> 00:04:06,870 to just use another object in there. 87 00:04:06,870 --> 00:04:09,453 So, that's exactly how MongoDB then works. 88 00:04:10,479 --> 00:04:13,280 So, let's try this out now, hit return. 89 00:04:13,280 --> 00:04:15,600 And, indeed, we get our two documents 90 00:04:15,600 --> 00:04:20,500 where the price property is below 500. 91 00:04:20,500 --> 00:04:23,530 Great, next up, let's actually search 92 00:04:23,530 --> 00:04:26,840 for two search criteria at the same time. 93 00:04:26,840 --> 00:04:29,690 So, what I want to do next is to search for documents 94 00:04:29,690 --> 00:04:32,910 which have the price less or equal than 500, 95 00:04:32,910 --> 00:04:34,760 which is what we had here already, 96 00:04:34,760 --> 00:04:37,910 but also, at the same time, the rating greater 97 00:04:37,910 --> 00:04:39,903 or equal to 4.8. 98 00:04:41,800 --> 00:04:46,040 And so, that should then give us only this tour here. 99 00:04:46,040 --> 00:04:47,240 So, only this one 100 00:04:47,240 --> 00:04:50,590 because this is the only one which has the price below 500 101 00:04:50,590 --> 00:04:55,140 and the rating equal or greater to 4.8. 102 00:04:55,140 --> 00:04:57,780 So, it's 4.8 and so that one is the one 103 00:04:57,780 --> 00:05:00,150 that should match our query. 104 00:05:00,150 --> 00:05:03,620 So, let's clear it to take away some of the confusion. 105 00:05:03,620 --> 00:05:05,670 Now, I want this result here 106 00:05:05,670 --> 00:05:08,550 so that we can compare it with the next result. 107 00:05:08,550 --> 00:05:11,833 And so, let's now write out the query that I just described. 108 00:05:13,710 --> 00:05:17,260 So, find and, again, this one here is 109 00:05:17,260 --> 00:05:18,590 gonna be just the same. 110 00:05:18,590 --> 00:05:22,690 So, we want the price to be less or equal than 500. 111 00:05:22,690 --> 00:05:27,093 Or, we could actually simply say less than 500. 112 00:05:28,630 --> 00:05:33,630 So, lte is less than or equal and lt is simply less than. 113 00:05:35,690 --> 00:05:39,030 So, this is the first part, the price less than 500. 114 00:05:39,030 --> 00:05:41,420 And, at the same time, we want the rating 115 00:05:41,420 --> 00:05:43,003 to be greater or equal to 4.8. 116 00:05:43,970 --> 00:05:44,980 And, that's easy. 117 00:05:44,980 --> 00:05:47,900 All we have to do is to specify a second field 118 00:05:47,900 --> 00:05:49,350 in our filter object. 119 00:05:49,350 --> 00:05:51,823 So, first, the price and now the rating. 120 00:05:53,330 --> 00:05:55,150 So, we want the rating to be 121 00:05:56,340 --> 00:05:57,840 and you can probably guess it, 122 00:05:58,880 --> 00:06:03,203 greater than or equal 4.8. 123 00:06:05,080 --> 00:06:09,420 Now, close this filter object and close the function. 124 00:06:09,420 --> 00:06:11,040 So, let's test it out. 125 00:06:11,040 --> 00:06:14,360 And, indeed, it gives us the result that we were expecting. 126 00:06:14,360 --> 00:06:18,520 So, the only document where both the search criteria here 127 00:06:18,520 --> 00:06:20,840 are true at the same time. 128 00:06:20,840 --> 00:06:23,310 So, just to recap, when we want to search 129 00:06:23,310 --> 00:06:25,670 for two criteria at the same time, 130 00:06:25,670 --> 00:06:28,540 which basically is an and query, 131 00:06:28,540 --> 00:06:31,950 so price less than 500, and rating greater 132 00:06:31,950 --> 00:06:32,953 or equal to 4.8. 133 00:06:34,070 --> 00:06:36,000 Well, the only thing that we have to do is 134 00:06:36,000 --> 00:06:39,080 to specify two fields in the filter object. 135 00:06:39,080 --> 00:06:41,600 And, I know this looks quite confusing. 136 00:06:41,600 --> 00:06:45,760 I felt exactly the same when I was learning this stuff, 137 00:06:45,760 --> 00:06:47,800 but I hope that you can still follow me 138 00:06:48,870 --> 00:06:53,790 so that we can now actually take it even one level further. 139 00:06:53,790 --> 00:06:56,940 So, here, we did an and query. 140 00:06:56,940 --> 00:07:00,100 So, querying for documents where these two conditions 141 00:07:00,100 --> 00:07:03,820 are both true, but now let's do an or query. 142 00:07:03,820 --> 00:07:06,470 So, basically searching for all the documents 143 00:07:06,470 --> 00:07:09,070 where either this part here is true 144 00:07:09,070 --> 00:07:11,103 or this part is true. 145 00:07:13,350 --> 00:07:18,090 So, db.tours.find 146 00:07:18,090 --> 00:07:20,050 and let's close it here already 147 00:07:20,050 --> 00:07:22,653 because this is gonna be an even more confusing one. 148 00:07:26,000 --> 00:07:29,410 So, we want to do an or query and the way it works 149 00:07:29,410 --> 00:07:32,530 with MongoDB operators is like this. 150 00:07:32,530 --> 00:07:37,530 We say or and then here, we specify an array. 151 00:07:38,949 --> 00:07:42,520 And, in this array, we will then put the two conditions 152 00:07:42,520 --> 00:07:45,003 where we want one of them to be true. 153 00:07:46,714 --> 00:07:48,710 So, again, I know this looks confusing, 154 00:07:48,710 --> 00:07:52,310 but let's write it out now and I will then explain it again 155 00:07:52,310 --> 00:07:53,863 when we're already doing that. 156 00:07:55,580 --> 00:07:59,220 So, the first condition is the price should 157 00:07:59,220 --> 00:08:02,653 be less than 500. 158 00:08:03,730 --> 00:08:05,823 So, basically the same as before. 159 00:08:06,670 --> 00:08:08,623 So, that is the first object. 160 00:08:09,600 --> 00:08:12,130 So, all of this, so the first condition, 161 00:08:12,130 --> 00:08:14,040 basically the first filter, 162 00:08:14,040 --> 00:08:15,240 and then the second one. 163 00:08:16,990 --> 00:08:20,750 So, the rating should be, just like before, 164 00:08:20,750 --> 00:08:25,750 greater or equal than 4.8. 165 00:08:26,250 --> 00:08:28,513 Close this one and close this one. 166 00:08:29,630 --> 00:08:31,800 And so, that's actually already it. 167 00:08:31,800 --> 00:08:36,549 So, again, to recap here, we start with the or operator 168 00:08:36,549 --> 00:08:40,030 and the or operator accepts an array of conditions. 169 00:08:40,030 --> 00:08:43,150 So, that's why we then create this array here 170 00:08:43,150 --> 00:08:45,610 and this array will then contain one object 171 00:08:45,610 --> 00:08:48,470 for each of our filters basically. 172 00:08:48,470 --> 00:08:51,650 So, we want either this one to be true 173 00:08:51,650 --> 00:08:53,143 or this one. 174 00:08:55,920 --> 00:09:00,130 So, let's try to see what our results are gonna be. 175 00:09:00,130 --> 00:09:04,120 And so, actually we get all of the three tours. 176 00:09:04,120 --> 00:09:06,357 And so, let's analyze why that is. 177 00:09:06,357 --> 00:09:09,913 So, the first one has a price less than 500. 178 00:09:11,260 --> 00:09:13,470 And so, that's why it got included here. 179 00:09:13,470 --> 00:09:16,820 It doesn't have the rating greater or equal to 4.8, 180 00:09:16,820 --> 00:09:20,940 so it's just 4.7, but since we're doing an or query here, 181 00:09:20,940 --> 00:09:23,730 only one of the conditions needs to be true. 182 00:09:23,730 --> 00:09:26,250 And so, that's why this document here got selected 183 00:09:26,250 --> 00:09:28,180 and is included in our output. 184 00:09:28,180 --> 00:09:32,940 Next up, this one also has the price less or equal than 500 185 00:09:32,940 --> 00:09:35,800 and also, at the same time, it has the rating great 186 00:09:35,800 --> 00:09:37,810 or equal than 4.8. 187 00:09:37,810 --> 00:09:39,940 And so, it got included actually 188 00:09:39,940 --> 00:09:41,623 for both of them being true. 189 00:09:43,530 --> 00:09:47,980 Then, the last one does not have the price less than 500, 190 00:09:47,980 --> 00:09:52,123 but it does have the rating greater or equal to 4.8. 191 00:09:53,210 --> 00:09:56,210 And so, again, one of the two conditions is true 192 00:09:56,210 --> 00:09:58,830 and since we're doing an or query, 193 00:09:58,830 --> 00:10:00,483 this tour also got included. 194 00:10:02,020 --> 00:10:04,080 So, let's clear this and only one more, 195 00:10:04,080 --> 00:10:06,170 which is gonna be kind of the same. 196 00:10:06,170 --> 00:10:11,080 I'm simply gonna change from less than to greater than. 197 00:10:11,080 --> 00:10:12,630 And, what I want you to do now is 198 00:10:12,630 --> 00:10:14,910 to guess the output of this one based 199 00:10:14,910 --> 00:10:16,420 on the previous result. 200 00:10:16,420 --> 00:10:18,820 So, can you guess what the result will be? 201 00:10:18,820 --> 00:10:20,770 So, let's take a look. 202 00:10:20,770 --> 00:10:24,490 And so, now, indeed, we no longer have all three tours, 203 00:10:24,490 --> 00:10:26,750 but only the second and the third one 204 00:10:26,750 --> 00:10:28,510 because, remember, the first tour 205 00:10:28,510 --> 00:10:30,760 had the price less than 500 206 00:10:30,760 --> 00:10:32,460 and also the rating less than 4.8. 207 00:10:33,350 --> 00:10:35,820 And so, none of the conditions were applying 208 00:10:35,820 --> 00:10:37,700 and so it's no longer included. 209 00:10:37,700 --> 00:10:39,490 Only the second and the third one, 210 00:10:39,490 --> 00:10:43,480 which now has the price also not greater than 500, 211 00:10:43,480 --> 00:10:45,600 but it has the rating of 4.8 212 00:10:45,600 --> 00:10:47,510 and so it's still included. 213 00:10:47,510 --> 00:10:50,090 And, the last one, of course, has everything true 214 00:10:50,090 --> 00:10:52,310 and so, of course, it's also here. 215 00:10:52,310 --> 00:10:54,980 Just one more thing that I wanted to show you here is 216 00:10:54,980 --> 00:10:58,290 that besides our filter object, so this one, 217 00:10:58,290 --> 00:11:01,600 we can also pass in an object for projection. 218 00:11:01,600 --> 00:11:04,610 So, what projection means is that we simply want 219 00:11:04,610 --> 00:11:07,650 to select some of the fields in the output. 220 00:11:07,650 --> 00:11:10,310 So, let me show it to you and it's very simple. 221 00:11:10,310 --> 00:11:15,310 All we have to do is, for example, say name equals to one. 222 00:11:15,510 --> 00:11:18,570 So, what this means is that we only want the name 223 00:11:18,570 --> 00:11:22,670 to be in the output and so that's why we set name to one. 224 00:11:22,670 --> 00:11:25,520 All the others are not gonna appear in this case. 225 00:11:25,520 --> 00:11:26,780 So, let me show that to you. 226 00:11:26,780 --> 00:11:28,770 And, indeed, we only have the name 227 00:11:28,770 --> 00:11:30,870 and no longer all these other properties. 228 00:11:30,870 --> 00:11:33,913 And, this can be very useful in some cases. 229 00:11:35,130 --> 00:11:37,610 The idea is, of course, also showing up, 230 00:11:37,610 --> 00:11:38,880 but that's always there. 231 00:11:38,880 --> 00:11:41,300 There's no way of removing that. 232 00:11:41,300 --> 00:11:42,780 Okay, cool. 233 00:11:42,780 --> 00:11:46,460 So, I think the main goal of this lecture is now achieved, 234 00:11:46,460 --> 00:11:48,450 which was basically to get you familiar 235 00:11:48,450 --> 00:11:51,200 with the way we query in MongoDB 236 00:11:51,200 --> 00:11:55,570 and also show you these complex MongoDB operators 237 00:11:55,570 --> 00:11:57,090 that we have here. 238 00:11:57,090 --> 00:11:58,590 For some reason, I cannot select it, 239 00:11:58,590 --> 00:11:59,970 but you know what I mean. 240 00:11:59,970 --> 00:12:01,540 So, we have greater than, 241 00:12:01,540 --> 00:12:04,050 we have or, and we really have a ton 242 00:12:04,050 --> 00:12:05,540 of other operators still. 243 00:12:05,540 --> 00:12:07,360 So, this is only the surface, 244 00:12:07,360 --> 00:12:09,960 but throughout the rest of the course, you will, of course, 245 00:12:09,960 --> 00:12:12,990 get to know a couple of other operators. 246 00:12:12,990 --> 00:12:15,260 So, this is just to get you familiar, 247 00:12:15,260 --> 00:12:18,250 get you started with querying in MongoDB. 248 00:12:18,250 --> 00:12:21,093 And, I think in this lecture, we did that successfully. 19384

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