﻿1
00:00:01,100 --> 00:00:02,450
‫Narrador: Bem-vindo de volta.

2
00:00:02,450 --> 00:00:04,570
‫Neste vídeo e no

3
00:00:04,570 --> 00:00:06,820
‫próximo, quero apresentar a você

4
00:00:06,820 --> 00:00:10,680
‫o pipeline de agregação MongoDB, que é uma estrutura

5
00:00:10,680 --> 00:00:13,750
‫MongoDB extremamente poderosa e útil para agregação

6
00:00:13,750 --> 00:00:15,433
‫de dados.

7
00:00:17,180 --> 00:00:19,020
‫E a ideia

8
00:00:19,020 --> 00:00:21,900
‫é que basicamente definamos um pipeline por

9
00:00:21,900 --> 00:00:24,070
‫onde passam todos os documentos

10
00:00:24,070 --> 00:00:26,470
‫de uma determinada coleção, onde

11
00:00:26,470 --> 00:00:30,870
‫são processados passo a passo para transformá-los em resultados agregados.

12
00:00:30,870 --> 00:00:33,660
‫Por exemplo, podemos usar o pipeline de

13
00:00:33,660 --> 00:00:36,190
‫agregação para calcular médias ou calcular valores

14
00:00:36,190 --> 00:00:39,010
‫mínimos e máximos ou podemos calcular distâncias

15
00:00:39,010 --> 00:00:41,380
‫até, e podemos realmente fazer todos

16
00:00:41,380 --> 00:00:43,590
‫os tipos de coisas.

17
00:00:43,590 --> 00:00:46,220
‫É realmente incrível como esse pipeline

18
00:00:46,220 --> 00:00:48,440
‫de agregação é poderoso.

19
00:00:48,440 --> 00:00:50,530
‫Tudo bem, mas chega de conversa.

20
00:00:50,530 --> 00:00:53,900
‫Agora vamos começar a usar o pipeline de agregação

21
00:00:53,900 --> 00:00:57,122
‫e vou criar uma nova função de cabeçalho aqui,

22
00:00:57,122 --> 00:01:00,290
‫porque mais tarde definiremos uma nova rota e

23
00:01:00,290 --> 00:01:02,583
‫usaremos essa função para isso.

24
00:01:03,610 --> 00:01:06,093
‫Mas essa nova rota, vou criá-la mais tarde.

25
00:01:07,495 --> 00:01:09,720
‫Então, eu quero criar uma

26
00:01:09,720 --> 00:01:13,756
‫função aqui que irá calcular algumas estatísticas sobre nossos passeios.

27
00:01:13,756 --> 00:01:16,987
‫Vou chamá-lo de getTourStats.

28
00:01:19,070 --> 00:01:21,860
‫Ok, então Stats for statistics, e

29
00:01:21,860 --> 00:01:23,770
‫vai ser uma

30
00:01:23,770 --> 00:01:28,770
‫função assíncrona e um código vs agora automaticamente pré-preenchido com isso.

31
00:01:29,140 --> 00:01:33,923
‫Tudo bem, vamos criar ou tentar pegar o bloco aqui.

32
00:01:38,010 --> 00:01:41,970
‫Na verdade, vou copiar isso daqui para

33
00:01:41,970 --> 00:01:45,600
‫cima e agora vou criar uma

34
00:01:45,600 --> 00:01:47,703
‫variável chamada estatísticas.

35
00:01:50,120 --> 00:01:54,600
‫Agora, o pipeline de agregação é realmente um recurso do MongoDB.

36
00:01:54,600 --> 00:01:57,330
‫Mas o Mongoose, é claro, nos dá

37
00:01:57,330 --> 00:02:01,210
‫acesso a ele, para que possamos usá-lo no driver do Mongoose, certo?

38
00:02:01,210 --> 00:02:04,070
‫Então, usando nosso modelo de tour

39
00:02:04,070 --> 00:02:07,217
‫para acessar a coleção de tours,

40
00:02:07,217 --> 00:02:10,053
‫dizemos tour. agregar.

41
00:02:12,580 --> 00:02:15,250
‫E assim, o pipeline de agregação é

42
00:02:15,250 --> 00:02:18,847
‫um pouco como uma consulta regular e, portanto, usar o

43
00:02:18,847 --> 00:02:22,512
‫pipeline de agregação é um pouco como fazer uma consulta regular.

44
00:02:22,512 --> 00:02:25,550
‫A diferença aqui é que nas agregações,

45
00:02:25,550 --> 00:02:28,620
‫como já mencionei, podemos manipular os dados em

46
00:02:28,620 --> 00:02:30,750
‫algumas etapas diferentes e,

47
00:02:30,750 --> 00:02:33,400
‫portanto, vamos agora definir essas etapas.

48
00:02:33,400 --> 00:02:37,093
‫E, para isso, passamos por uma série de chamados estágios.

49
00:02:38,150 --> 00:02:41,050
‫Então, passamos em uma matriz e

50
00:02:41,050 --> 00:02:43,110
‫aqui teremos vários estágios.

51
00:02:43,110 --> 00:02:46,540
‫E novamente os documentos passam por esses estágios um

52
00:02:46,540 --> 00:02:50,350
‫por um, passo a passo na sequência de definição

53
00:02:50,350 --> 00:02:52,462
‫conforme a definimos aqui.

54
00:02:52,462 --> 00:02:54,860
‫Portanto, cada um dos elementos neste

55
00:02:54,860 --> 00:02:56,970
‫array será um dos estágios.

56
00:02:56,970 --> 00:02:59,470
‫E há uma tonelada de diferentes

57
00:02:59,470 --> 00:03:02,110
‫estágios que podemos escolher, mas direi apenas

58
00:03:02,110 --> 00:03:04,200
‫os mais comuns nesta palestra

59
00:03:04,200 --> 00:03:06,070
‫e também na próxima.

60
00:03:06,070 --> 00:03:08,400
‫De qualquer forma, agora quero

61
00:03:08,400 --> 00:03:11,500
‫dar uma olhada rápida na documentação do MongoDB

62
00:03:11,500 --> 00:03:13,853
‫porque acho que ainda não fizemos isso.

63
00:03:17,285 --> 00:03:20,840
‫Então MongoDB e já conhecemos este site.

64
00:03:20,840 --> 00:03:24,460
‫Então, em nosso site do MongoDB, vamos aqui

65
00:03:24,460 --> 00:03:27,840
‫para aprender, depois documentação e aqui

66
00:03:27,840 --> 00:03:32,380
‫selecionamos o Manual do MongoDB e esta documentação é enorme.

67
00:03:32,380 --> 00:03:34,480
‫Ele realmente tem um monte de coisas aqui

68
00:03:34,480 --> 00:03:36,450
‫e se você fosse passar por

69
00:03:36,450 --> 00:03:39,623
‫tudo isso, bem, então você se tornaria um mestre do MongoDB.

70
00:03:40,600 --> 00:03:44,010
‫Portanto, é uma boa introdução ao MongoDB, você

71
00:03:44,010 --> 00:03:45,760
‫tem a instalação aqui.

72
00:03:45,760 --> 00:03:49,610
‫Você tem as Operações CRUD, então uma boa visão

73
00:03:49,610 --> 00:03:51,340
‫geral sobre muitas

74
00:03:51,340 --> 00:03:54,610
‫das coisas que já aprendemos antes, certo?

75
00:03:54,610 --> 00:03:56,960
‫Então você tem coisas sobre a

76
00:03:57,800 --> 00:04:00,390
‫agregação e, em particular, o pipeline de

77
00:04:00,390 --> 00:04:02,320
‫agregação sobre o qual

78
00:04:02,320 --> 00:04:04,730
‫falaremos agora, mas o que eu realmente

79
00:04:04,730 --> 00:04:08,210
‫quero mostrar aqui é essa referência que temos na parte

80
00:04:08,210 --> 00:04:10,750
‫inferior porque na referência temos aqui para

81
00:04:10,750 --> 00:04:12,880
‫exemplo os operadores e é aí

82
00:04:12,880 --> 00:04:16,570
‫que temos muitas coisas importantes que usamos o tempo todo.

83
00:04:16,570 --> 00:04:18,430
‫Então, vamos dar uma olhada

84
00:04:18,430 --> 00:04:22,200
‫aqui nos operadores de consulta, por exemplo, e aqui você vê, nós

85
00:04:22,200 --> 00:04:24,210
‫realmente temos esses operadores que já usamos.

86
00:04:24,210 --> 00:04:26,970
‫Por exemplo, maior ou igual, ou menor e

87
00:04:26,970 --> 00:04:29,560
‫igual, mas se algum dia em

88
00:04:29,560 --> 00:04:32,200
‫seus próprios aplicativos você precisar de alguma

89
00:04:32,200 --> 00:04:35,170
‫outra operadora, bem, agora você sabe onde pode encontrá-los.

90
00:04:35,170 --> 00:04:37,570
‫Agora, é claro, também é sempre muito

91
00:04:37,570 --> 00:04:40,370
‫útil apenas fazer uma pesquisa rápida no Google,

92
00:04:40,370 --> 00:04:43,490
‫provavelmente encontrar alguma postagem sobre estouro de pilha sobre

93
00:04:43,490 --> 00:04:45,687
‫isso, mas acredite, muitas vezes

94
00:04:45,687 --> 00:04:49,790
‫é mais fácil e rápido pular rapidamente para a documentação e pesquisar

95
00:04:49,790 --> 00:04:52,763
‫rapidamente o que quer que você ' está precisando.

96
00:04:53,700 --> 00:04:56,350
‫Você só precisa saber como

97
00:04:56,350 --> 00:04:59,050
‫funciona a documentação e, sabendo disso, será

98
00:04:59,050 --> 00:05:02,473
‫bem fácil encontrar o que está procurando, certo?

99
00:05:03,400 --> 00:05:05,570
‫Aqui você também tem alguns

100
00:05:05,570 --> 00:05:08,920
‫operadores lógicos, por exemplo, o operador OR que já usamos.

101
00:05:08,920 --> 00:05:13,920
‫Novamente, muitas coisas realmente, operadores geoespaciais e vamos usar algumas,

102
00:05:14,120 --> 00:05:16,790
‫na verdade, mais tarde, e

103
00:05:16,790 --> 00:05:19,040
‫sim, muitas coisas realmente.

104
00:05:19,040 --> 00:05:22,280
‫Então, o que eu queria mostrar a vocês após esta palestra, na

105
00:05:22,280 --> 00:05:24,793
‫verdade, são os estágios do pipeline de agregação.

106
00:05:26,680 --> 00:05:29,140
‫Então aqui você tem muitos deles

107
00:05:29,140 --> 00:05:32,090
‫e o que vamos usar nesta palestra

108
00:05:32,090 --> 00:05:35,410
‫aqui é a correspondência, por exemplo e grupo,

109
00:05:35,410 --> 00:05:36,820
‫onde está isso?

110
00:05:36,820 --> 00:05:39,670
‫Sim grupo, esse é muito importante, e como

111
00:05:39,670 --> 00:05:41,660
‫mencionei, vou mostrar a

112
00:05:41,660 --> 00:05:44,920
‫vocês os mais importantes nesta palestra e na próxima.

113
00:05:44,920 --> 00:05:48,270
‫Mas, novamente, se você em algum caso precisar de algo mais,

114
00:05:48,270 --> 00:05:51,110
‫então vá em frente, venha aqui para esta documentação

115
00:05:51,110 --> 00:05:53,920
‫e você encontrará o que está procurando.

116
00:05:53,920 --> 00:05:54,753
‫Tudo bem?

117
00:05:55,740 --> 00:05:58,630
‫De qualquer forma, vamos aprender como podemos realmente

118
00:05:58,630 --> 00:06:00,940
‫definir um desses estágios, certo?

119
00:06:00,940 --> 00:06:03,170
‫E vou começar com fósforo.

120
00:06:03,170 --> 00:06:05,330
‫E a correspondência consiste basicamente

121
00:06:05,330 --> 00:06:07,890
‫em selecionar ou filtrar determinados documentos.

122
00:06:07,890 --> 00:06:09,510
‫E é muito simples.

123
00:06:09,510 --> 00:06:13,210
‫É realmente como um objeto de filtro no

124
00:06:13,210 --> 00:06:16,380
‫MongoDB, como temos usado tantas vezes.

125
00:06:16,380 --> 00:06:19,340
‫Portanto, cada um dos estágios é

126
00:06:19,340 --> 00:06:22,750
‫um objeto e aí vem o nome do estágio.

127
00:06:22,750 --> 00:06:26,300
‫Então esta é a fase de jogo, certo?

128
00:06:26,300 --> 00:06:29,603
‫E, como mencionei, é apenas uma consulta.

129
00:06:30,730 --> 00:06:33,570
‫E então, digamos que, para começar, queremos apenas selecionar

130
00:06:33,570 --> 00:06:35,200
‫documentos que tenham uma média

131
00:06:35,200 --> 00:06:39,630
‫de classificações maior ou igual a 4. 5

132
00:06:39,630 --> 00:06:41,110
‫Então você pode fazer isso?

133
00:06:41,110 --> 00:06:43,560
‫Vou te dar um segundo para fazer isso aqui.

134
00:06:44,730 --> 00:06:46,123
‫Então, eu espero que você tenha feito isso.

135
00:06:47,090 --> 00:06:50,440
‫Portanto, a média das avaliações deve ser maior ou

136
00:06:52,240 --> 00:06:55,383
‫igual a 4. 5

137
00:06:56,460 --> 00:06:59,260
‫E então é isso, essa é a primeira etapa.

138
00:06:59,260 --> 00:07:03,500
‫E normalmente esta fase do jogo é apenas uma fase preliminar para

139
00:07:03,500 --> 00:07:07,050
‫depois se preparar para as próximas fases que se seguem.

140
00:07:07,050 --> 00:07:10,173
‫Portanto, o próximo é agora a fase de grupos.

141
00:07:13,000 --> 00:07:14,610
‫Então agrupe e

142
00:07:14,610 --> 00:07:17,840
‫aí precisamos passar sempre apenas outro objeto.

143
00:07:17,840 --> 00:07:20,600
‫Parece meio estranho com todos esses objetos, mas, sim,

144
00:07:20,600 --> 00:07:22,870
‫você já viu isso antes e o

145
00:07:22,870 --> 00:07:24,780
‫MongoDB simplesmente funciona dessa maneira.

146
00:07:24,780 --> 00:07:28,293
‫São sempre objetos, dentro de objetos, dentro de objetos.

147
00:07:29,520 --> 00:07:32,690
‫E este grupo aqui é onde a verdadeira

148
00:07:32,690 --> 00:07:34,520
‫magia acontece porque como

149
00:07:34,520 --> 00:07:36,870
‫o nome diz, ele nos permite

150
00:07:36,870 --> 00:07:38,820
‫agrupar documentos, basicamente usando acumuladores.

151
00:07:38,820 --> 00:07:40,600
‫E um acumulador é,

152
00:07:40,600 --> 00:07:42,850
‫por exemplo, até calculando uma média.

153
00:07:42,850 --> 00:07:46,270
‫Portanto, se tivermos cinco tours, cada um deles

154
00:07:46,270 --> 00:07:50,250
‫com uma classificação, podemos calcular a classificação média usando o grupo.

155
00:07:50,250 --> 00:07:52,680
‫E então vamos fazer exatamente isso aqui.

156
00:07:52,680 --> 00:07:55,190
‫Agora, a primeira coisa que sempre precisamos

157
00:07:55,190 --> 00:07:58,950
‫especificar é o id, porque é aqui que vamos especificar

158
00:07:58,950 --> 00:08:00,803
‫o que queremos agrupar.

159
00:08:02,420 --> 00:08:05,480
‫Por enquanto, dizemos nulo aqui porque queremos ter

160
00:08:05,480 --> 00:08:08,870
‫tudo em um grupo para que possamos calcular as

161
00:08:08,870 --> 00:08:11,600
‫estatísticas de todos os passeios juntos e

162
00:08:11,600 --> 00:08:13,713
‫não separá-los por grupos.

163
00:08:14,590 --> 00:08:18,250
‫Iremos, um pouco mais tarde, também agrupar por coisas diferentes, por

164
00:08:18,250 --> 00:08:21,010
‫exemplo podemos agrupar pela dificuldade e podemos então,

165
00:08:21,010 --> 00:08:23,900
‫por exemplo, calcular a média para os passeios

166
00:08:23,900 --> 00:08:26,820
‫fáceis, a média para os passeios médios e

167
00:08:26,820 --> 00:08:29,373
‫a média para os passeios difíceis.

168
00:08:29,373 --> 00:08:32,720
‫Então, novamente, podemos agrupar por um de nossos campos e

169
00:08:32,720 --> 00:08:35,750
‫esse campo, vamos especificar aqui, mas por agora,

170
00:08:35,750 --> 00:08:39,000
‫como eu disse, queremos calcular essas médias para todos

171
00:08:39,000 --> 00:08:41,803
‫os passeios juntos em um grande grupo.

172
00:08:42,865 --> 00:08:46,990
‫Nesse caso, dizemos _id e definimos como null.

173
00:08:47,994 --> 00:08:51,600
‫Agora vamos calcular a classificação média.

174
00:08:51,600 --> 00:08:54,423
‫Para fazer isso, simplesmente especificamos um novo

175
00:08:55,320 --> 00:08:58,713
‫campo, então vamos simplesmente chamá-lo de classificação média,

176
00:09:01,080 --> 00:09:03,480
‫assim, e isso vai ser

177
00:09:05,620 --> 00:09:07,160
‫bem, a média,

178
00:09:07,160 --> 00:09:11,560
‫que é mais um operador do MongoDB, então este aqui.

179
00:09:11,560 --> 00:09:14,233
‫Você o encontrará na referência se procurar.

180
00:09:15,149 --> 00:09:17,800
‫Portanto, este é um operador matemático que

181
00:09:17,800 --> 00:09:20,520
‫calcula a média e agora o nome do campo.

182
00:09:20,520 --> 00:09:23,530
‫E novamente, eu sei que isso vai parecer muito

183
00:09:23,530 --> 00:09:26,390
‫estranho, mas para especificar o campo do qual

184
00:09:26,390 --> 00:09:29,110
‫queremos calcular a média, precisamos usar o

185
00:09:29,110 --> 00:09:31,900
‫cifrão, mas entre aspas aqui e depois

186
00:09:31,900 --> 00:09:33,583
‫o nome do campo.

187
00:09:34,560 --> 00:09:36,803
‫Portanto, as classificações são médias neste caso.

188
00:09:39,316 --> 00:09:41,573
‫E vamos calcular também o preço médio.

189
00:09:43,500 --> 00:09:47,143
‫Então, o preço médio, e novamente, deu errado aqui, e

190
00:09:48,200 --> 00:09:49,300
‫então a

191
00:09:50,870 --> 00:09:52,970
‫média e então novamente, o nome

192
00:09:52,970 --> 00:09:55,170
‫do campo e entre aspas e

193
00:09:55,170 --> 00:09:56,470
‫com este cifrão.

194
00:09:58,800 --> 00:10:00,890
‫Certo, então parece meio estranho de

195
00:10:00,890 --> 00:10:01,900
‫novo, mas

196
00:10:01,900 --> 00:10:04,510
‫é assim que o pipeline de agregação funciona.

197
00:10:04,510 --> 00:10:06,300
‫Então, temos o preço médio.

198
00:10:06,300 --> 00:10:08,880
‫Na verdade, vamos calcular também o

199
00:10:08,880 --> 00:10:12,560
‫preço mínimo, então o menor preço e o maior preço.

200
00:10:12,560 --> 00:10:13,620
‫Então

201
00:10:15,439 --> 00:10:19,360
‫minPrice e de agora em diante, tudo parecerá parecido,

202
00:10:19,360 --> 00:10:21,190
‫então agora usamos o

203
00:10:22,200 --> 00:10:26,603
‫operador min e novamente o nome do campo como este.

204
00:10:29,783 --> 00:10:32,530
‫E uma vírgula aqui e agora vamos apenas

205
00:10:32,530 --> 00:10:35,053
‫duplicar esta para calcular o preço máximo.

206
00:10:37,910 --> 00:10:40,310
‫E agora, vamos realmente dar uma olhada no

207
00:10:40,310 --> 00:10:42,160
‫que já temos neste ponto.

208
00:10:44,240 --> 00:10:47,430
‫Agora, precisamos enviar essa resposta e,

209
00:10:47,430 --> 00:10:49,250
‫novamente, vou

210
00:10:49,250 --> 00:10:53,513
‫pegar algumas dessas respostas já feitas aqui.

211
00:10:59,154 --> 00:11:01,853
‫Portanto, os dados que queremos enviar são chamados de estatísticas.

212
00:11:06,740 --> 00:11:09,610
‫E agora tudo o que precisamos fazer é adicionar uma

213
00:11:09,610 --> 00:11:12,390
‫nova rota aqui em nossas rotas de turismo e, novamente,

214
00:11:12,390 --> 00:11:14,543
‫vou editar aqui, bem no topo.

215
00:11:16,368 --> 00:11:18,690
‫Então, roteador. route

216
00:11:21,597 --> 00:11:26,597
‫/ gettour, ou na verdade apenas tour-stats, assim porque

217
00:11:29,460 --> 00:11:33,730
‫get já está definido no método HTTP.

218
00:11:33,730 --> 00:11:37,090
‫Portanto, não há necessidade de repetir no nome.

219
00:11:37,090 --> 00:11:38,640
‫Então, tourController. getTourStats.

220
00:11:42,268 --> 00:11:46,707
‫Dê um cofre e vamos realmente testá-lo agora.

221
00:11:48,270 --> 00:11:52,710
‫Estou muito empolgado para testá-lo agora, para ver

222
00:11:52,710 --> 00:11:57,710
‫se funciona, porque, novamente, é uma ferramenta incrível e

223
00:11:57,720 --> 00:11:59,370
‫poderosa que

224
00:11:59,370 --> 00:12:01,503
‫permite fazer muitas coisas.

225
00:12:03,130 --> 00:12:05,280
‫Então, tour-stats, envie-o e

226
00:12:06,290 --> 00:12:09,000
‫esse não é realmente o resultado

227
00:12:09,000 --> 00:12:12,600
‫que estávamos esperando, então é apenas o pipeline que

228
00:12:12,600 --> 00:12:15,750
‫definimos, mas eu já sei por que é.

229
00:12:15,750 --> 00:12:18,950
‫Então não esperamos o resultado.

230
00:12:18,950 --> 00:12:21,410
‫Então isso, basicamente, como

231
00:12:21,410 --> 00:12:24,453
‫uma consulta normal, retornará um objeto agregado.

232
00:12:25,857 --> 00:12:29,770
‫Assim . find retornará uma consulta e. agregado vai

233
00:12:29,770 --> 00:12:32,330
‫retornar um objeto agregado.

234
00:12:32,330 --> 00:12:34,180
‫E então, só quando

235
00:12:34,180 --> 00:12:36,940
‫esperamos, ele realmente volta com o resultado.

236
00:12:36,940 --> 00:12:39,850
‫É por isso também que definimos esta função aqui como

237
00:12:39,850 --> 00:12:42,640
‫uma função assíncrona, para que possamos usar o await

238
00:12:42,640 --> 00:12:44,953
‫ali e este é o lugar certo.

239
00:12:45,860 --> 00:12:47,950
‫Vamos tentar novamente.

240
00:12:47,950 --> 00:12:49,850
‫E aqui vamos nós!

241
00:12:49,850 --> 00:12:51,250
‫Tão bom!

242
00:12:51,250 --> 00:12:54,910
‫A gente tem a nota média de todos os nossos tours,

243
00:12:54,910 --> 00:12:56,720
‫a gente tem o

244
00:12:56,720 --> 00:13:01,720
‫preço médio que vocês veem é 1563 e aí o mínimo e o máximo né?

245
00:13:01,910 --> 00:13:04,210
‫E a partir de nossos dados, podemos

246
00:13:04,210 --> 00:13:06,410
‫realmente confirmar que isso é verdade.

247
00:13:06,410 --> 00:13:07,770
‫Tão bom!

248
00:13:07,770 --> 00:13:09,770
‫Muito, muito bom.

249
00:13:09,770 --> 00:13:11,950
‫Agora, mais uma coisa que

250
00:13:11,950 --> 00:13:14,450
‫quero fazer aqui é calcular o número

251
00:13:14,450 --> 00:13:18,730
‫total de avaliações que temos e também o número total de passeios.

252
00:13:18,730 --> 00:13:20,700
‫Portanto, temos a classificação

253
00:13:20,700 --> 00:13:23,090
‫média aqui e vamos realmente fazer

254
00:13:23,090 --> 00:13:23,973
‫isso antes,

255
00:13:26,490 --> 00:13:27,323
‫então

256
00:13:28,850 --> 00:13:31,950
‫numRatings, como este e você provavelmente pode

257
00:13:31,950 --> 00:13:36,950
‫adivinhar que este aqui é chamado de soma e, em seguida,

258
00:13:38,500 --> 00:13:43,500
‫ratingsA Average, ou na verdade não ratingsA Average, mas ratingsQuantity, certo?

259
00:13:43,610 --> 00:13:46,480
‫É aí que o número de classificações é

260
00:13:46,480 --> 00:13:49,354
‫armazenado e, portanto, o número de classificações, o total,

261
00:13:49,354 --> 00:13:51,863
‫será a soma de todos eles.

262
00:13:52,840 --> 00:13:55,090
‫E agora, o último, é o número de tours

263
00:13:56,100 --> 00:13:57,880
‫e esse é um pouco mais

264
00:13:57,880 --> 00:14:00,660
‫complicado, então esse é um bom exemplo para mostrar a vocês aqui.

265
00:14:00,660 --> 00:14:04,570
‫Então, ainda queremos somar, somar tudo, basicamente,

266
00:14:04,570 --> 00:14:07,960
‫então ainda usamos soma, mas o

267
00:14:07,960 --> 00:14:10,340
‫que vamos somar?

268
00:14:10,340 --> 00:14:13,493
‫Bem, basicamente adicionamos um para cada documento,

269
00:14:14,443 --> 00:14:17,380
‫então dizemos 1 e é isso.

270
00:14:17,380 --> 00:14:19,610
‫Então, basicamente, para cada documento

271
00:14:19,610 --> 00:14:22,020
‫que vai passar por esse pipeline,

272
00:14:22,020 --> 00:14:24,960
‫um será adicionado a esse contador numérico.

273
00:14:24,960 --> 00:14:29,430
‫Vamos chamá-lo de numTours.

274
00:14:29,430 --> 00:14:33,763
‫E então, sim, vamos testar agora, novamente.

275
00:14:36,350 --> 00:14:39,320
‫E de fato temos nossos nove tours e

276
00:14:39,320 --> 00:14:41,303
‫já sabemos que temos nove.

277
00:14:42,650 --> 00:14:46,820
‫Portanto, essas são todas as estatísticas de todos os passeios juntos, mas vamos

278
00:14:46,820 --> 00:14:48,890
‫agora passar para o próximo nível.

279
00:14:48,890 --> 00:14:52,450
‫Como eu disse antes, agora podemos agrupar nossos resultados

280
00:14:52,450 --> 00:14:53,790
‫para campos diferentes.

281
00:14:53,790 --> 00:14:56,870
‫E vamos começar com a dificuldade.

282
00:14:56,870 --> 00:14:59,830
‫E isso é bastante semelhante a especificar os campos lá embaixo,

283
00:14:59,830 --> 00:15:01,990
‫que são simplesmente o cifrão e, em

284
00:15:01,990 --> 00:15:03,570
‫seguida, o nome do campo.

285
00:15:03,570 --> 00:15:07,303
‫Então $ dificuldade, dê um cofre e é isso.

286
00:15:08,350 --> 00:15:12,040
‫Envie aqui, e agora temos todas as

287
00:15:12,040 --> 00:15:15,950
‫estatísticas definidas para cada uma dessas três dificuldades.

288
00:15:15,950 --> 00:15:18,200
‫Isso é realmente incrível.

289
00:15:18,200 --> 00:15:20,470
‫Então essa é a parte que me deixa boquiaberto.

290
00:15:20,470 --> 00:15:22,170
‫É absolutamente fantástico.

291
00:15:22,170 --> 00:15:25,020
‫Quer dizer, você pode começar a ver todos os

292
00:15:25,020 --> 00:15:27,260
‫tipos de coisas, todos os tipos

293
00:15:27,260 --> 00:15:30,890
‫de manipulação de dados que você pode fazer usando esse pipeline, certo?

294
00:15:30,890 --> 00:15:33,360
‫Portanto, podemos realmente começar a analisar as coisas,

295
00:15:33,360 --> 00:15:36,170
‫por exemplo, vemos que os passeios mais fáceis são

296
00:15:36,170 --> 00:15:38,640
‫aqueles que obtêm as classificações mais baixas

297
00:15:38,640 --> 00:15:41,370
‫com um 4. 6, enquanto os passeios

298
00:15:41,370 --> 00:15:43,980
‫médios são os que obtêm as classificações mais elevadas.

299
00:15:43,980 --> 00:15:46,750
‫A gente vê também que

300
00:15:46,750 --> 00:15:49,620
‫os passeios difíceis são os mais caros

301
00:15:49,620 --> 00:15:54,520
‫com preço médio de 1997, enquanto os mais fáceis são também

302
00:15:54,520 --> 00:15:58,010
‫os mais baratos com preço de 1272, certo?

303
00:15:58,010 --> 00:15:59,910
‫Vemos também que os

304
00:15:59,910 --> 00:16:01,880
‫passeios mais fáceis são os que

305
00:16:01,880 --> 00:16:05,400
‫temos mais, então quatro fáceis e apenas dois difíceis, certo?

306
00:16:05,400 --> 00:16:07,510
‫Portanto, podemos usar isso, é claro,

307
00:16:07,510 --> 00:16:10,693
‫para obter todos os tipos de insights sobre nossos dados.

308
00:16:12,350 --> 00:16:13,630
‫Vamos comentar

309
00:16:13,630 --> 00:16:16,583
‫este aqui e vamos tentar outro, por

310
00:16:17,560 --> 00:16:20,130
‫exemplo, por avaliações, por que não,

311
00:16:20,130 --> 00:16:22,773
‫vamos apenas experimentar, ver o que temos.

312
00:16:24,450 --> 00:16:26,310
‫Por exemplo, temos dois tours, basicamente com uma

313
00:16:26,310 --> 00:16:28,353
‫classificação de 4. 5, temos

314
00:16:29,530 --> 00:16:32,963
‫dois passeios com 4. 7, um passeio com 4. 8 e

315
00:16:34,040 --> 00:16:37,077
‫três tours com 4. 9

316
00:16:37,077 --> 00:16:39,870
‫Ah, e também aqui embaixo, uma turnê com 4. 6, e por

317
00:16:39,870 --> 00:16:42,320
‫exemplo, um insight que podemos obter

318
00:16:42,320 --> 00:16:45,680
‫aqui é que os passeios muito caros com

319
00:16:45,680 --> 00:16:49,103
‫esse preço médio de 1997 têm avaliações extremamente boas.

320
00:16:50,260 --> 00:16:55,260
‫Então, todos os tipos de coisas que podemos fazer aqui.

321
00:16:55,360 --> 00:16:59,520
‫Vamos nos livrar deste, vamos adicionar este de volta, e agora

322
00:16:59,520 --> 00:17:00,975
‫podemos até mesmo

323
00:17:00,975 --> 00:17:03,180
‫fazer algumas operações com este.

324
00:17:03,180 --> 00:17:08,180
‫Então, apenas por diversão, vamos colocar essa dificuldade em maiúsculas.

325
00:17:08,550 --> 00:17:12,370
‫Então, é claro, vai ser outro objeto aqui e aqui

326
00:17:13,570 --> 00:17:15,810
‫na frente é o operador.

327
00:17:15,810 --> 00:17:18,873
‫E então o operador, neste caso, é denominado $ toUpper.

328
00:17:21,150 --> 00:17:25,230
‫Então, mais um operador MongoDB.

329
00:17:25,230 --> 00:17:30,140
‫Portanto, verifique e agora está escrito em maiúsculas.

330
00:17:30,140 --> 00:17:31,290
‫Excelente!

331
00:17:31,290 --> 00:17:34,650
‫Portanto, temos aqui a fase de grupos, que está bastante completa.

332
00:17:34,650 --> 00:17:38,180
‫Então, vamos tentar outro que é um estágio de classificação.

333
00:17:38,180 --> 00:17:42,120
‫Portanto, outro objeto em nosso array para mais um estágio e

334
00:17:43,250 --> 00:17:45,380
‫este é chamado de sort.

335
00:17:45,380 --> 00:17:49,070
‫Então, classifique e aí, precisamos de outro objeto, e ele

336
00:17:49,070 --> 00:17:52,190
‫meio que completou automaticamente este, não sei por que,

337
00:17:52,190 --> 00:17:54,860
‫e aqui agora podemos especificar por

338
00:17:54,860 --> 00:17:59,183
‫qual campo queremos classificar isso e vamos realmente usar o preço médio.

339
00:18:00,580 --> 00:18:03,610
‫E agora aqui na classificação, realmente precisamos usar os

340
00:18:03,610 --> 00:18:06,563
‫nomes de campo que especificamos aqui no grupo.

341
00:18:07,520 --> 00:18:10,630
‫Não podemos mais usar os nomes antigos porque neste ponto

342
00:18:10,630 --> 00:18:11,930
‫eles já se foram.

343
00:18:11,930 --> 00:18:13,610
‫Eles não existem mais.

344
00:18:13,610 --> 00:18:16,400
‫Então, neste ponto, no pipeline

345
00:18:16,400 --> 00:18:19,410
‫de agregação, realmente já temos esses resultados.

346
00:18:19,410 --> 00:18:22,790
‫Então, esses são agora nossos documentos basicamente.

347
00:18:22,790 --> 00:18:25,960
‫Portanto, se você quiser classificar pelo preço médio, este

348
00:18:25,960 --> 00:18:28,943
‫é o nome do campo que devemos usar.

349
00:18:30,530 --> 00:18:33,070
‫Então podemos dizer o preço médio

350
00:18:33,070 --> 00:18:35,793
‫e então podemos dizer 1 para ascendente.

351
00:18:37,680 --> 00:18:38,883
‫Então, vamos experimentar.

352
00:18:41,550 --> 00:18:43,070
‫E sim, de fato.

353
00:18:43,070 --> 00:18:46,480
‫Esse é o mais baixo e esse é o mais alto.

354
00:18:46,480 --> 00:18:47,820
‫Excelente!

355
00:18:47,820 --> 00:18:50,210
‫Então fizemos muitas coisas.

356
00:18:50,210 --> 00:18:53,480
‫Deixe-me apenas mostrar que também podemos repetir estágios.

357
00:18:53,480 --> 00:18:55,710
‫Então, vamos fazer outra combinação

358
00:18:58,740 --> 00:19:00,930
‫aqui e esta

359
00:19:00,930 --> 00:19:03,240
‫é apenas para mostrar que

360
00:19:03,240 --> 00:19:07,130
‫podemos repetir estágios e também quero mostrar outro operador.

361
00:19:07,130 --> 00:19:11,020
‫Então, vamos selecionar por id e lembrar que id

362
00:19:11,020 --> 00:19:12,920
‫é a dificuldade, certo?

363
00:19:12,920 --> 00:19:15,023
‫Então, acabamos de especificar isso aqui.

364
00:19:16,820 --> 00:19:20,670
‫Então, queremos o id e agora um novo operador

365
00:19:20,670 --> 00:19:22,500
‫que ainda não usamos.

366
00:19:22,500 --> 00:19:26,913
‫Queremos que não seja igual a, digamos, fácil.

367
00:19:28,210 --> 00:19:29,830
‫E assim, assim, vamos

368
00:19:29,830 --> 00:19:32,260
‫selecionar todos os documentos que não são fáceis.

369
00:19:32,260 --> 00:19:33,880
‫Então, nesse caso,

370
00:19:33,880 --> 00:19:36,340
‫aquele que diz médio e difícil, certo?

371
00:19:36,340 --> 00:19:41,007
‫Então, basicamente, excluindo aquele que diz fácil, certo?

372
00:19:42,200 --> 00:19:43,790
‫Então, novamente, não é

373
00:19:43,790 --> 00:19:47,950
‫realmente útil aqui porque isso vai tirar muitos dos nossos dados significativos,

374
00:19:47,950 --> 00:19:50,090
‫mas apenas para mostrar que podemos,

375
00:19:50,090 --> 00:19:51,980
‫é claro, combinar várias vezes.

376
00:19:51,980 --> 00:19:54,750
‫Nesse caso, combinamos uma vez antes de realmente

377
00:19:54,750 --> 00:19:58,160
‫fazer o grupo e, em seguida, combinamos quando estávamos prontos,

378
00:19:58,160 --> 00:19:59,475
‫fazendo o agrupamento.

379
00:19:59,475 --> 00:20:01,720
‫Agora, vamos realmente manter isso aqui, fora

380
00:20:01,720 --> 00:20:03,798
‫do nosso pipeline de agregação, mas

381
00:20:03,798 --> 00:20:06,200
‫vou deixá-lo aqui, apenas para que você

382
00:20:06,200 --> 00:20:08,200
‫o mantenha como uma referência.

383
00:20:09,580 --> 00:20:12,750
‫Salve novamente, tente novamente e estes são os

384
00:20:12,750 --> 00:20:14,730
‫nossos resultados para obter as

385
00:20:14,730 --> 00:20:16,590
‫estatísticas do tour.

386
00:20:16,590 --> 00:20:19,030
‫Então, muito bom, muito bom.

387
00:20:19,030 --> 00:20:21,070
‫Espero que tenham gostado

388
00:20:21,070 --> 00:20:23,200
‫deste vídeo e, no próximo, continuaremos

389
00:20:23,200 --> 00:20:26,810
‫usando o pipeline de agregação para fazer mais alguns cálculos.

390
00:20:26,810 --> 00:20:30,050
‫E para mostrar mais algumas etapas diferentes.

391
00:20:30,050 --> 00:20:31,973
‫Portanto, fique atento para isso.

