﻿1
00:00:01,090 --> 00:00:04,160
‫Instrutor: Consultar dados em um banco de dados

2
00:00:04,160 --> 00:00:08,320
‫é uma das operações mais importantes que temos em bancos de dados.

3
00:00:08,320 --> 00:00:11,820
‫E então, vamos agora dar uma olhada em alguns operadores

4
00:00:11,820 --> 00:00:14,770
‫de consulta no MongoDB, começando com alguns

5
00:00:14,770 --> 00:00:17,993
‫simples e depois passando para algumas consultas realmente complexas.

6
00:00:19,610 --> 00:00:23,010
‫E, para começar, vamos nos dar um pouco de espaço aqui.

7
00:00:23,010 --> 00:00:25,760
‫E então, você já sabe, a maneira

8
00:00:25,760 --> 00:00:28,480
‫mais fácil de consultar basicamente todos os

9
00:00:28,480 --> 00:00:31,470
‫documentos em uma determinada coleção é apenas usar

10
00:00:31,470 --> 00:00:33,560
‫find, sem passar nada lá.

11
00:00:33,560 --> 00:00:36,130
‫Então, é isso que temos feito até este ponto.

12
00:00:36,130 --> 00:00:38,570
‫E assim, nos dá simplesmente esse resultado

13
00:00:38,570 --> 00:00:40,040
‫com todos os

14
00:00:40,040 --> 00:00:42,110
‫documentos que estão em uma determinada

15
00:00:42,110 --> 00:00:44,620
‫coleção basicamente sem nenhum critério de pesquisa.

16
00:00:44,620 --> 00:00:47,910
‫Mas, agora, digamos que na verdade queremos apenas uma turnê e

17
00:00:47,910 --> 00:00:49,540
‫já sabemos o nome dela.

18
00:00:49,540 --> 00:00:51,610
‫E assim, podemos pesquisar

19
00:00:51,610 --> 00:00:54,120
‫esse passeio usando o nome que conhecemos.

20
00:00:54,120 --> 00:00:57,910
‫E então, nós db. passeios e, novamente,

21
00:00:59,150 --> 00:01:00,400
‫encontrar.

22
00:01:00,400 --> 00:01:03,573
‫Mas, desta vez, vamos passar um objeto de filtro.

23
00:01:04,930 --> 00:01:06,710
‫Então, novamente, precisamos de um objeto aqui.

24
00:01:06,710 --> 00:01:09,580
‫E então, você começa a ver agora

25
00:01:09,580 --> 00:01:12,560
‫que no MongoDB, realmente tudo funciona com objetos.

26
00:01:12,560 --> 00:01:15,330
‫E, isso será ainda mais proeminente um pouco mais tarde

27
00:01:15,330 --> 00:01:16,163
‫nesta palestra.

28
00:01:17,265 --> 00:01:20,790
‫Então, dentro desse objeto, passamos o filtro.

29
00:01:20,790 --> 00:01:22,650
‫Então, basicamente, os

30
00:01:22,650 --> 00:01:25,050
‫critérios de pesquisa que queremos pesquisar.

31
00:01:25,050 --> 00:01:28,343
‫Portanto, simplesmente definimos o nome do

32
00:01:28,343 --> 00:01:30,570
‫passeio que queremos pesquisar.

33
00:01:30,570 --> 00:01:32,120
‫Então, digamos The Forest Hiker.

34
00:01:35,040 --> 00:01:36,330
‫E, na verdade, é isso.

35
00:01:36,330 --> 00:01:39,750
‫Então, esse é o nosso critério de pesquisa ou filtro de pesquisa.

36
00:01:39,750 --> 00:01:41,260
‫E, se tivéssemos

37
00:01:41,260 --> 00:01:43,580
‫retornado agora, teríamos apenas este

38
00:01:43,580 --> 00:01:47,553
‫passeio em que o nome corresponde exatamente ao que passamos.

39
00:01:48,970 --> 00:01:51,830
‫E poderíamos fazer, é claro, o mesmo para qualquer outra coisa.

40
00:01:51,830 --> 00:01:53,760
‫Por exemplo, para a

41
00:01:53,760 --> 00:01:57,800
‫dificuldade, poderíamos pesquisar passeios que tenham uma

42
00:01:57,800 --> 00:01:59,593
‫dificuldade fácil.

43
00:02:01,890 --> 00:02:06,343
‫Então, dificuldade e fácil.

44
00:02:07,640 --> 00:02:10,030
‫Feche o objeto, feche a função.

45
00:02:10,030 --> 00:02:13,910
‫E assim, conseguimos todos os passeios onde a dificuldade é fácil.

46
00:02:13,910 --> 00:02:16,420
‫No momento, há apenas um passeio, mas

47
00:02:16,420 --> 00:02:19,010
‫se tivéssemos vários passeios com dificuldade definida

48
00:02:19,010 --> 00:02:20,260
‫como fácil,

49
00:02:20,260 --> 00:02:23,020
‫então, é claro, ele retornaria todos esses documentos.

50
00:02:23,020 --> 00:02:25,150
‫Então, essa é a

51
00:02:25,150 --> 00:02:27,400
‫maneira mais fácil de pesquisar documentos.

52
00:02:27,400 --> 00:02:29,610
‫Agora, vamos avançar para o próximo

53
00:02:29,610 --> 00:02:32,063
‫nível, usando alguns operadores de consulta especiais.

54
00:02:33,100 --> 00:02:36,070
‫E o que eu quero fazer é pesquisar passeios

55
00:02:36,070 --> 00:02:38,673
‫que tenham um preço abaixo de 500.

56
00:02:40,470 --> 00:02:43,670
‫E, a maneira como funciona é assim.

57
00:02:43,670 --> 00:02:48,670
‫Então, sempre usamos db. O nome da coleção. achar.

58
00:02:49,170 --> 00:02:51,670
‫E então, novamente, ou objeto de filtro.

59
00:02:51,670 --> 00:02:54,620
‫E então, lembre-se, eu quero pesquisar preços,

60
00:02:54,620 --> 00:02:56,430
‫então digo preço.

61
00:02:56,430 --> 00:03:00,550
‫E agora, quero todos os passeios com um preço abaixo de 500.

62
00:03:00,550 --> 00:03:02,090
‫Então, como faço isso?

63
00:03:02,090 --> 00:03:05,000
‫Bem, eu preciso usar a operadora menor

64
00:03:05,000 --> 00:03:06,630
‫e funciona assim.

65
00:03:06,630 --> 00:03:09,080
‫Precisamos definir ainda um novo objeto onde

66
00:03:09,080 --> 00:03:13,017
‫definimos a propriedade lte como 500, então fechamos esse objeto

67
00:03:15,090 --> 00:03:16,550
‫e, em seguida,

68
00:03:16,550 --> 00:03:19,320
‫fechamos o primeiro objeto de preço e,

69
00:03:19,320 --> 00:03:21,410
‫em seguida, fechamos a função.

70
00:03:21,410 --> 00:03:23,950
‫Parece muito estranho, eu sei, mas

71
00:03:23,950 --> 00:03:27,130
‫é assim que usamos operadores de consulta no MongoDB.

72
00:03:27,130 --> 00:03:30,200
‫Portanto, novamente, lte significa menos do que porque é

73
00:03:30,200 --> 00:03:32,070
‫isso que estamos procurando.

74
00:03:32,070 --> 00:03:36,140
‫Onde o preço for inferior a 500.

75
00:03:36,140 --> 00:03:38,820
‫E, este sinal especial aqui é reservado no

76
00:03:38,820 --> 00:03:40,490
‫MongoDB para seus operadores.

77
00:03:40,490 --> 00:03:43,520
‫Portanto, sempre que vir este cifrão aqui no MongoDB,

78
00:03:43,520 --> 00:03:45,933
‫você saberá que é um operador Mongo.

79
00:03:46,900 --> 00:03:48,690
‫Então, a parte mais estranha aqui

80
00:03:48,690 --> 00:03:51,430
‫é provavelmente que temos que fazer isso dentro de

81
00:03:51,430 --> 00:03:54,600
‫um novo objeto, mas se você pensar sobre isso, é realmente

82
00:03:54,600 --> 00:03:58,430
‫a única maneira de especificar que o preço não deve ser simplesmente 500,

83
00:03:58,430 --> 00:03:59,530
‫mas outra coisa.

84
00:03:59,530 --> 00:04:03,320
‫Portanto, temos que definir o preço para algo diferente de 500.

85
00:04:03,320 --> 00:04:04,760
‫E, a melhor maneira

86
00:04:04,760 --> 00:04:06,870
‫realmente é apenas usar outro objeto lá.

87
00:04:06,870 --> 00:04:09,453
‫Então, é exatamente assim que o MongoDB funciona.

88
00:04:10,479 --> 00:04:13,280
‫Então, vamos tentar isso agora, clique em retornar.

89
00:04:13,280 --> 00:04:15,600
‫E, de fato, obtemos nossos

90
00:04:15,600 --> 00:04:20,500
‫dois documentos em que a propriedade do preço é inferior a 500.

91
00:04:20,500 --> 00:04:23,530
‫Ótimo, a seguir, vamos pesquisar

92
00:04:23,530 --> 00:04:26,840
‫dois critérios de pesquisa ao mesmo tempo.

93
00:04:26,840 --> 00:04:29,690
‫Então, o que quero fazer a seguir é buscar

94
00:04:29,690 --> 00:04:32,910
‫documentos que tenham o preço menor ou igual a 500, que

95
00:04:32,910 --> 00:04:34,760
‫é o que já tínhamos aqui,

96
00:04:34,760 --> 00:04:37,910
‫mas também, ao mesmo tempo, a classificação maior ou igual

97
00:04:37,910 --> 00:04:39,903
‫a 4. 8

98
00:04:41,800 --> 00:04:46,040
‫E então, isso deve nos dar apenas este passeio aqui.

99
00:04:46,040 --> 00:04:47,240
‫Então, só este

100
00:04:47,240 --> 00:04:50,590
‫porque é o único que tem o preço abaixo de 500 e

101
00:04:50,590 --> 00:04:55,140
‫a avaliação é igual ou superior a 4. 8

102
00:04:55,140 --> 00:04:57,780
‫Então, são 4. 8 e então esse

103
00:04:57,780 --> 00:05:00,150
‫é o que deve corresponder à nossa consulta.

104
00:05:00,150 --> 00:05:03,620
‫Então, vamos limpar isso para tirar um pouco da confusão.

105
00:05:03,620 --> 00:05:05,670
‫Agora, quero este resultado aqui

106
00:05:05,670 --> 00:05:08,550
‫para que possamos compará-lo com o próximo resultado.

107
00:05:08,550 --> 00:05:11,833
‫E então, vamos agora escrever a consulta que acabei de descrever.

108
00:05:13,710 --> 00:05:17,260
‫Então, encontre e, novamente, este aqui vai ser

109
00:05:17,260 --> 00:05:18,590
‫o mesmo.

110
00:05:18,590 --> 00:05:22,690
‫Portanto, queremos que o preço seja menor ou igual a 500.

111
00:05:22,690 --> 00:05:27,093
‫Ou poderíamos simplesmente dizer menos de 500.

112
00:05:28,630 --> 00:05:33,630
‫Portanto, lte é menor ou igual e simplesmente menor que.

113
00:05:35,690 --> 00:05:39,030
‫Então, essa é a primeira parte, o preço menor que 500.

114
00:05:39,030 --> 00:05:41,420
‫E, ao mesmo tempo, queremos que a classificação seja maior ou

115
00:05:41,420 --> 00:05:43,003
‫igual a 4. 8

116
00:05:43,970 --> 00:05:44,980
‫E isso é fácil.

117
00:05:44,980 --> 00:05:47,900
‫Tudo o que precisamos fazer é especificar um segundo campo em

118
00:05:47,900 --> 00:05:49,350
‫nosso objeto de filtro.

119
00:05:49,350 --> 00:05:51,823
‫Então, primeiro o preço e agora a avaliação.

120
00:05:53,330 --> 00:05:55,150
‫Portanto, queremos que a classificação

121
00:05:56,340 --> 00:05:57,840
‫seja, e provavelmente você

122
00:05:58,880 --> 00:06:03,203
‫pode adivinhar, maior ou igual a 4. 8

123
00:06:05,080 --> 00:06:09,420
‫Agora, feche este objeto de filtro e feche a função.

124
00:06:09,420 --> 00:06:11,040
‫Então, vamos testar.

125
00:06:11,040 --> 00:06:14,360
‫E, de fato, nos dá o resultado que esperávamos.

126
00:06:14,360 --> 00:06:18,520
‫Portanto, o único documento em que os dois critérios de pesquisa

127
00:06:18,520 --> 00:06:20,840
‫aqui são verdadeiros ao mesmo tempo.

128
00:06:20,840 --> 00:06:23,310
‫Então, só para recapitular, quando queremos buscar

129
00:06:23,310 --> 00:06:25,670
‫dois critérios ao mesmo tempo,

130
00:06:25,670 --> 00:06:28,540
‫que basicamente é uma consulta e, então preço

131
00:06:28,540 --> 00:06:31,950
‫menor que 500 e avaliação maior ou igual a

132
00:06:31,950 --> 00:06:32,953
‫4. 8

133
00:06:34,070 --> 00:06:36,000
‫Bem, a única coisa que temos

134
00:06:36,000 --> 00:06:39,080
‫que fazer é especificar dois campos no objeto de filtro.

135
00:06:39,080 --> 00:06:41,600
‫E, eu sei que isso parece muito confuso.

136
00:06:41,600 --> 00:06:45,760
‫Eu me senti exatamente da mesma forma quando estava aprendendo essas

137
00:06:45,760 --> 00:06:47,800
‫coisas, mas espero que

138
00:06:48,870 --> 00:06:53,790
‫você ainda possa me seguir para que agora possamos realmente ir mais longe.

139
00:06:53,790 --> 00:06:56,940
‫Então, aqui, fizemos uma consulta e.

140
00:06:56,940 --> 00:07:00,100
‫Portanto, consultar documentos em que essas duas

141
00:07:00,100 --> 00:07:03,820
‫condições sejam verdadeiras, mas agora vamos fazer uma consulta ou.

142
00:07:03,820 --> 00:07:06,470
‫Então, basicamente procurando por todos os documentos

143
00:07:06,470 --> 00:07:09,070
‫onde ou esta parte aqui é verdadeira

144
00:07:09,070 --> 00:07:11,103
‫ou esta parte é verdadeira.

145
00:07:13,350 --> 00:07:18,090
‫Então, db. passeios. encontre e

146
00:07:18,090 --> 00:07:20,050
‫vamos fechá-lo aqui porque

147
00:07:20,050 --> 00:07:22,653
‫vai ser ainda mais confuso.

148
00:07:26,000 --> 00:07:29,410
‫Então, queremos fazer uma consulta ou e a maneira

149
00:07:29,410 --> 00:07:32,530
‫como funciona com os operadores MongoDB é assim.

150
00:07:32,530 --> 00:07:37,530
‫Dizemos ou e aqui especificamos um array.

151
00:07:38,949 --> 00:07:42,520
‫E, nessa matriz, colocaremos as duas condições onde queremos

152
00:07:42,520 --> 00:07:45,003
‫que uma delas seja verdadeira.

153
00:07:46,714 --> 00:07:48,710
‫Então, novamente, eu sei que isso

154
00:07:48,710 --> 00:07:52,310
‫parece confuso, mas vamos escrever agora e então explicarei novamente quando

155
00:07:52,310 --> 00:07:53,863
‫já estivermos fazendo isso.

156
00:07:55,580 --> 00:07:59,220
‫Portanto, a primeira condição é que o

157
00:07:59,220 --> 00:08:02,653
‫preço deve ser inferior a 500.

158
00:08:03,730 --> 00:08:05,823
‫Então, basicamente o mesmo de antes.

159
00:08:06,670 --> 00:08:08,623
‫Então, esse é o primeiro objeto.

160
00:08:09,600 --> 00:08:12,130
‫Então, tudo isso, então a primeira condição,

161
00:08:12,130 --> 00:08:14,040
‫basicamente o primeiro filtro e

162
00:08:14,040 --> 00:08:15,240
‫depois o segundo.

163
00:08:16,990 --> 00:08:20,750
‫Portanto, a classificação deve ser, como antes, maior

164
00:08:20,750 --> 00:08:25,750
‫ou igual a 4. 8

165
00:08:26,250 --> 00:08:28,513
‫Feche este e feche este.

166
00:08:29,630 --> 00:08:31,800
‫E então, na verdade já é isso.

167
00:08:31,800 --> 00:08:36,550
‫Portanto, novamente, para recapitular aqui, começamos com o operador ou e

168
00:08:36,550 --> 00:08:40,030
‫o operador ou aceita uma matriz de condições.

169
00:08:40,030 --> 00:08:43,150
‫Então, é por isso que criamos essa matriz aqui

170
00:08:43,150 --> 00:08:45,610
‫e essa matriz conterá um objeto

171
00:08:45,610 --> 00:08:48,470
‫para cada um de nossos filtros basicamente.

172
00:08:48,470 --> 00:08:51,650
‫Portanto, queremos que este seja verdadeiro

173
00:08:51,650 --> 00:08:53,143
‫ou este.

174
00:08:55,920 --> 00:09:00,130
‫Então, vamos tentar ver quais serão nossos resultados.

175
00:09:00,130 --> 00:09:04,120
‫E então, na verdade, temos todas as três turnês.

176
00:09:04,120 --> 00:09:06,357
‫E então, vamos analisar por que isso acontece.

177
00:09:06,357 --> 00:09:09,913
‫Portanto, o primeiro tem um preço inferior a 500.

178
00:09:11,260 --> 00:09:13,470
‫E então, é por isso que foi incluído aqui.

179
00:09:13,470 --> 00:09:16,820
‫Não tem classificação maior ou igual a 4. 8, então

180
00:09:16,820 --> 00:09:20,940
‫são apenas 4. 7, mas como estamos fazendo uma

181
00:09:20,940 --> 00:09:23,730
‫consulta ou aqui, apenas uma das condições precisa ser verdadeira.

182
00:09:23,730 --> 00:09:26,250
‫E é por isso que este documento aqui foi selecionado

183
00:09:26,250 --> 00:09:28,180
‫e está incluído em nossa saída.

184
00:09:28,180 --> 00:09:32,940
‫A seguir, este também tem o preço menor ou igual a 500 e também,

185
00:09:32,940 --> 00:09:35,800
‫ao mesmo tempo, tem a avaliação ótimo ou igual

186
00:09:35,800 --> 00:09:37,810
‫a 4. 8

187
00:09:37,810 --> 00:09:39,940
‫E então, foi incluído, na verdade,

188
00:09:39,940 --> 00:09:41,623
‫por ambos serem verdadeiros.

189
00:09:43,530 --> 00:09:47,980
‫Então, o último não tem o preço menor que 500, mas tem a

190
00:09:47,980 --> 00:09:52,123
‫avaliação maior ou igual a 4. 8

191
00:09:53,210 --> 00:09:56,210
‫E então, novamente, uma das duas condições é verdadeira

192
00:09:56,210 --> 00:09:58,830
‫e, como estamos fazendo uma consulta ou, esse

193
00:09:58,830 --> 00:10:00,483
‫passeio também foi incluído.

194
00:10:02,020 --> 00:10:04,080
‫Então, vamos esclarecer isso e apenas mais

195
00:10:04,080 --> 00:10:06,170
‫um, que vai ser mais ou menos o mesmo.

196
00:10:06,170 --> 00:10:11,080
‫Vou simplesmente mudar de menor que para maior que.

197
00:10:11,080 --> 00:10:12,630
‫E o que eu quero que

198
00:10:12,630 --> 00:10:14,910
‫você faça agora é adivinhar a saída deste com

199
00:10:14,910 --> 00:10:16,420
‫base no resultado anterior.

200
00:10:16,420 --> 00:10:18,820
‫Então, você consegue adivinhar qual será o resultado?

201
00:10:18,820 --> 00:10:20,770
‫Então, vamos dar uma olhada.

202
00:10:20,770 --> 00:10:24,490
‫E então, agora, de fato, não temos mais todos os três passeios, mas

203
00:10:24,490 --> 00:10:26,750
‫apenas o segundo e o terceiro porque, lembre-se,

204
00:10:26,750 --> 00:10:28,510
‫o primeiro passeio teve o preço

205
00:10:28,510 --> 00:10:30,760
‫inferior a 500 e também a classificação inferior

206
00:10:30,760 --> 00:10:32,460
‫a 4. 8

207
00:10:33,350 --> 00:10:35,820
‫E assim, nenhuma das condições se aplicava e

208
00:10:35,820 --> 00:10:37,700
‫por isso não está mais incluído.

209
00:10:37,700 --> 00:10:39,490
‫Apenas o segundo e o terceiro,

210
00:10:39,490 --> 00:10:43,480
‫que agora tem preço também não superior a 500, mas tem avaliação

211
00:10:43,480 --> 00:10:45,600
‫de 4. 8 e

212
00:10:45,600 --> 00:10:47,510
‫por isso ainda está incluído.

213
00:10:47,510 --> 00:10:50,090
‫E, o último, claro, tem tudo verdadeiro

214
00:10:50,090 --> 00:10:52,310
‫e então, claro, também está aqui.

215
00:10:52,310 --> 00:10:54,980
‫Só mais uma coisa que queria mostrar

216
00:10:54,980 --> 00:10:58,290
‫aqui é que além do nosso objeto de filtro, então

217
00:10:58,290 --> 00:11:01,600
‫este aqui, também podemos passar um objeto para projeção.

218
00:11:01,600 --> 00:11:04,610
‫Portanto, o que projeção significa é que

219
00:11:04,610 --> 00:11:07,650
‫simplesmente queremos selecionar alguns dos campos na saída.

220
00:11:07,650 --> 00:11:10,310
‫Então, deixe-me mostrar a você e é muito simples.

221
00:11:10,310 --> 00:11:15,310
‫Tudo o que temos a fazer é, por exemplo, dizer que o nome é igual a um.

222
00:11:15,510 --> 00:11:18,570
‫Então, o que isso significa é que queremos apenas que

223
00:11:18,570 --> 00:11:22,670
‫o nome apareça na saída e é por isso que definimos o nome como um.

224
00:11:22,670 --> 00:11:25,520
‫Todos os outros não vão aparecer neste caso.

225
00:11:25,520 --> 00:11:26,780
‫Então, deixe-me mostrar isso a você.

226
00:11:26,780 --> 00:11:28,770
‫E, de fato, temos apenas o

227
00:11:28,770 --> 00:11:30,870
‫nome e não mais todas essas outras propriedades.

228
00:11:30,870 --> 00:11:33,913
‫E isso pode ser muito útil em alguns casos.

229
00:11:35,130 --> 00:11:37,610
‫A ideia, claro, também está aparecendo, mas

230
00:11:37,610 --> 00:11:38,880
‫está sempre lá.

231
00:11:38,880 --> 00:11:41,300
‫Não há como remover isso.

232
00:11:41,300 --> 00:11:42,780
‫OK fixe.

233
00:11:42,780 --> 00:11:46,460
‫Portanto, acho que o objetivo principal desta palestra foi

234
00:11:46,460 --> 00:11:48,450
‫alcançado, que era basicamente

235
00:11:48,450 --> 00:11:51,200
‫familiarizar você com a maneira como

236
00:11:51,200 --> 00:11:55,570
‫consultamos no MongoDB e também mostrar esses operadores complexos do MongoDB

237
00:11:55,570 --> 00:11:57,090
‫que temos aqui.

238
00:11:57,090 --> 00:11:58,590
‫Por algum motivo, não posso selecioná-lo, mas

239
00:11:58,590 --> 00:11:59,970
‫você sabe o que quero dizer.

240
00:11:59,970 --> 00:12:01,540
‫Então, temos mais do que,

241
00:12:01,540 --> 00:12:04,050
‫temos ou, e realmente temos uma tonelada de

242
00:12:04,050 --> 00:12:05,540
‫outras operadoras ainda.

243
00:12:05,540 --> 00:12:07,360
‫Portanto, esta é apenas

244
00:12:07,360 --> 00:12:09,960
‫a superfície, mas durante o resto do

245
00:12:09,960 --> 00:12:12,990
‫curso, você irá, é claro, conhecer alguns outros operadores.

246
00:12:12,990 --> 00:12:15,260
‫Portanto, isso é apenas para

247
00:12:15,260 --> 00:12:18,250
‫familiarizá-lo, para começar a consultar no MongoDB.

248
00:12:18,250 --> 00:12:21,093
‫E, acho que nesta palestra, fizemos isso com sucesso.

