﻿1
00:00:01,100 --> 00:00:02,450
‫Narrador: Bienvenido de nuevo.

2
00:00:02,450 --> 00:00:04,570
‫En este video y en

3
00:00:04,570 --> 00:00:06,820
‫el siguiente, quiero presentarles la

4
00:00:06,820 --> 00:00:10,680
‫canalización de agregación de MongoDB, que es un marco de

5
00:00:10,680 --> 00:00:13,750
‫MongoDB extremadamente poderoso y extremadamente útil para la

6
00:00:13,750 --> 00:00:15,433
‫agregación de datos.

7
00:00:17,180 --> 00:00:19,020
‫Y la idea

8
00:00:19,020 --> 00:00:21,900
‫es que básicamente definamos un pipeline por

9
00:00:21,900 --> 00:00:24,070
‫el que pasan todos los

10
00:00:24,070 --> 00:00:26,470
‫documentos de una determinada colección donde

11
00:00:26,470 --> 00:00:30,870
‫se procesan paso a paso para transformarlos en resultados agregados.

12
00:00:30,870 --> 00:00:33,660
‫Por ejemplo, podemos usar la tubería de

13
00:00:33,660 --> 00:00:36,190
‫agregación para calcular promedios o calcular

14
00:00:36,190 --> 00:00:39,010
‫valores mínimos y máximos o podemos calcular

15
00:00:39,010 --> 00:00:41,380
‫distancias incluso, y realmente podemos hacer

16
00:00:41,380 --> 00:00:43,590
‫todo tipo de cosas.

17
00:00:43,590 --> 00:00:46,220
‫Es realmente sorprendente lo poderosa que

18
00:00:46,220 --> 00:00:48,440
‫es esta canalización de agregación.

19
00:00:48,440 --> 00:00:50,530
‫Está bien, pero basta de hablar.

20
00:00:50,530 --> 00:00:53,900
‫Comencemos ahora a usar la canalización de agregación y

21
00:00:53,900 --> 00:00:57,122
‫crearé una nueva función de encabezado aquí porque

22
00:00:57,122 --> 00:01:00,290
‫más adelante definiremos una nueva ruta y luego

23
00:01:00,290 --> 00:01:02,583
‫usaremos esa función para eso.

24
00:01:03,610 --> 00:01:06,093
‫Pero esa nueva ruta, la crearé más tarde.

25
00:01:07,495 --> 00:01:09,720
‫Así que quiero crear una

26
00:01:09,720 --> 00:01:13,756
‫función aquí que calculará un par de estadísticas sobre nuestros recorridos.

27
00:01:13,756 --> 00:01:16,987
‫Así que voy a llamar a este getTourStats.

28
00:01:19,070 --> 00:01:21,860
‫Bien, entonces Estadísticas para estadísticas, y

29
00:01:21,860 --> 00:01:23,770
‫será una función asíncrona,

30
00:01:23,770 --> 00:01:28,770
‫por lo que un código vs ahora se rellena automáticamente con esto.

31
00:01:29,140 --> 00:01:33,923
‫Muy bien, creemos o intentemos atrapar el bloque aquí.

32
00:01:38,010 --> 00:01:41,970
‫De hecho, voy a copiar esto de

33
00:01:41,970 --> 00:01:45,600
‫aquí arriba, y ahora aquí crearé una

34
00:01:45,600 --> 00:01:47,703
‫variable llamada stats.

35
00:01:50,120 --> 00:01:54,600
‫Ahora, la canalización de agregación es realmente una característica de MongoDB.

36
00:01:54,600 --> 00:01:57,330
‫Pero Mongoose, por supuesto, nos da acceso

37
00:01:57,330 --> 00:02:01,210
‫a él, para que podamos usarlo en el controlador de Mongoose, ¿verdad?

38
00:02:01,210 --> 00:02:04,070
‫Entonces, usando nuestro modelo de recorrido

39
00:02:04,070 --> 00:02:07,217
‫para acceder a la colección de recorridos,

40
00:02:07,217 --> 00:02:10,053
‫decimos recorrido. agregar.

41
00:02:12,580 --> 00:02:15,250
‫Entonces, la canalización de agregación es un

42
00:02:15,250 --> 00:02:18,847
‫poco como una consulta normal y, por lo tanto, usar la

43
00:02:18,847 --> 00:02:22,512
‫canalización de agregación es un poco como hacer una consulta regular.

44
00:02:22,512 --> 00:02:25,550
‫La diferencia aquí es que en agregaciones, como

45
00:02:25,550 --> 00:02:28,620
‫ya mencioné, podemos manipular los datos en un

46
00:02:28,620 --> 00:02:30,750
‫par de pasos diferentes,

47
00:02:30,750 --> 00:02:33,400
‫por lo que ahora definamos estos pasos.

48
00:02:33,400 --> 00:02:37,093
‫Y para eso, pasamos por una serie de las llamadas etapas.

49
00:02:38,150 --> 00:02:41,050
‫Entonces pasamos en una matriz, y luego

50
00:02:41,050 --> 00:02:43,110
‫aquí tendremos muchas etapas.

51
00:02:43,110 --> 00:02:46,540
‫Y nuevamente, los documentos pasan por estas etapas una

52
00:02:46,540 --> 00:02:50,350
‫por una, paso a paso en la secuencia de definición

53
00:02:50,350 --> 00:02:52,462
‫como la definimos aquí.

54
00:02:52,462 --> 00:02:54,860
‫Entonces, cada uno de los elementos de esta

55
00:02:54,860 --> 00:02:56,970
‫matriz será una de las etapas.

56
00:02:56,970 --> 00:02:59,470
‫Y hay un montón de etapas diferentes entre

57
00:02:59,470 --> 00:03:02,110
‫las que podemos elegir, pero solo les diré

58
00:03:02,110 --> 00:03:04,200
‫las más comunes en esta conferencia

59
00:03:04,200 --> 00:03:06,070
‫y también en la siguiente.

60
00:03:06,070 --> 00:03:08,400
‫Pero de todos modos, ahora quiero tomarme

61
00:03:08,400 --> 00:03:11,500
‫un minuto y echar un vistazo rápido a la documentación de

62
00:03:11,500 --> 00:03:13,853
‫MongoDB porque creo que aún no lo hicimos.

63
00:03:17,285 --> 00:03:20,840
‫Entonces MongoDB y ya conocemos este sitio web.

64
00:03:20,840 --> 00:03:24,460
‫Entonces, en nuestro sitio web de MongoDB, vamos aquí

65
00:03:24,460 --> 00:03:27,840
‫para aprender, luego la documentación y luego

66
00:03:27,840 --> 00:03:32,380
‫aquí seleccionamos el Manual de MongoDB y esta documentación es enorme.

67
00:03:32,380 --> 00:03:34,480
‫Realmente, tiene muchas cosas aquí y si

68
00:03:34,480 --> 00:03:36,450
‫fueras a pasar por todo,

69
00:03:36,450 --> 00:03:39,623
‫bueno, entonces te convertirías realmente en un maestro de MongoDB.

70
00:03:40,600 --> 00:03:44,010
‫Así que te da una buena introducción a MongoDB,

71
00:03:44,010 --> 00:03:45,760
‫tienes la instalación aquí.

72
00:03:45,760 --> 00:03:49,610
‫Tienes las operaciones CRUD, así que una buena descripción

73
00:03:49,610 --> 00:03:51,340
‫general de muchas

74
00:03:51,340 --> 00:03:54,610
‫de las cosas que ya aprendimos antes, ¿verdad?

75
00:03:54,610 --> 00:03:56,960
‫Luego tienes cosas sobre la agregación y,

76
00:03:57,800 --> 00:04:00,390
‫en particular, la tubería de agregación de la

77
00:04:00,390 --> 00:04:02,320
‫que vamos a hablar ahora,

78
00:04:02,320 --> 00:04:04,730
‫pero lo que realmente quiero mostrarte aquí

79
00:04:04,730 --> 00:04:08,210
‫es en realidad esta referencia que tenemos en la parte inferior

80
00:04:08,210 --> 00:04:10,750
‫porque en la referencia que tenemos aquí para

81
00:04:10,750 --> 00:04:12,880
‫ejemplo, los operadores y ahí es

82
00:04:12,880 --> 00:04:16,570
‫donde tenemos muchas cosas importantes que hemos estado usando todo el tiempo.

83
00:04:16,570 --> 00:04:18,430
‫Entonces, echemos un vistazo aquí

84
00:04:18,430 --> 00:04:22,200
‫a los operadores de consulta, por ejemplo, y aquí puede ver, en

85
00:04:22,200 --> 00:04:24,210
‫realidad tenemos estos operadores que ya usamos.

86
00:04:24,210 --> 00:04:26,970
‫Entonces por ejemplo, mayor o igual, o menor

87
00:04:26,970 --> 00:04:29,560
‫que e igual, pero si algún

88
00:04:29,560 --> 00:04:32,200
‫día en tus propias aplicaciones necesitas algún

89
00:04:32,200 --> 00:04:35,170
‫otro operador, bueno, ahora ya sabes dónde puedes encontrarlos.

90
00:04:35,170 --> 00:04:37,570
‫Ahora, por supuesto, también siempre es

91
00:04:37,570 --> 00:04:40,370
‫muy útil hacer una búsqueda rápida en Google,

92
00:04:40,370 --> 00:04:43,490
‫probablemente encuentre alguna publicación de desbordamiento de pila al

93
00:04:43,490 --> 00:04:45,687
‫respecto, pero créanme, muchas veces

94
00:04:45,687 --> 00:04:49,790
‫es más fácil y rápido saltar rápidamente a la documentación y buscar

95
00:04:49,790 --> 00:04:52,763
‫rápidamente lo que sea que ' estás necesitando.

96
00:04:53,700 --> 00:04:56,350
‫Solo necesita saber cómo funciona la documentación

97
00:04:56,350 --> 00:04:59,050
‫y una vez que lo sepa, será bastante

98
00:04:59,050 --> 00:05:02,473
‫fácil para usted encontrar lo que está buscando, ¿de acuerdo?

99
00:05:03,400 --> 00:05:05,570
‫Aquí también tiene algunos operadores

100
00:05:05,570 --> 00:05:08,920
‫lógicos, por ejemplo, el operador OR que ya usamos.

101
00:05:08,920 --> 00:05:13,920
‫Una vez más, realmente un montón de cosas, operadores geoespaciales y, de

102
00:05:14,120 --> 00:05:16,790
‫hecho, usaremos algunos más tarde, y

103
00:05:16,790 --> 00:05:19,040
‫sí, realmente muchas cosas.

104
00:05:19,040 --> 00:05:22,280
‫Entonces, lo que quería mostrarles después de esta conferencia, en realidad,

105
00:05:22,280 --> 00:05:24,793
‫son las etapas del proceso de agregación.

106
00:05:26,680 --> 00:05:29,140
‫Así que aquí tienes muchos de

107
00:05:29,140 --> 00:05:32,090
‫ellos y lo que vamos a usar en

108
00:05:32,090 --> 00:05:35,410
‫esta conferencia aquí es coincidencia, por ejemplo y grupo,

109
00:05:35,410 --> 00:05:36,820
‫¿dónde es eso?

110
00:05:36,820 --> 00:05:39,670
‫Sí, grupo, ese es uno muy importante, y

111
00:05:39,670 --> 00:05:41,660
‫como mencioné, les mostraré los

112
00:05:41,660 --> 00:05:44,920
‫más importantes en esta conferencia y en la próxima.

113
00:05:44,920 --> 00:05:48,270
‫Pero de nuevo, si en algún caso necesita algo

114
00:05:48,270 --> 00:05:51,110
‫más, continúe, venga aquí a esta documentación

115
00:05:51,110 --> 00:05:53,920
‫y encontrará lo que está buscando.

116
00:05:53,920 --> 00:05:54,753
‫¿Está bien?

117
00:05:55,740 --> 00:05:58,630
‫De todos modos, aprendamos ahora cómo podemos definir realmente

118
00:05:58,630 --> 00:06:00,940
‫una de estas etapas, ¿de acuerdo?

119
00:06:00,940 --> 00:06:03,170
‫Y voy a empezar con un partido.

120
00:06:03,170 --> 00:06:05,330
‫Y emparejar consiste básicamente

121
00:06:05,330 --> 00:06:07,890
‫en seleccionar o filtrar determinados documentos.

122
00:06:07,890 --> 00:06:09,510
‫Y entonces es muy simple.

123
00:06:09,510 --> 00:06:13,210
‫Es realmente como un objeto de filtro en MongoDB,

124
00:06:13,210 --> 00:06:16,380
‫como lo hemos estado usando tantas veces.

125
00:06:16,380 --> 00:06:19,340
‫Entonces, cada una de las etapas es un

126
00:06:19,340 --> 00:06:22,750
‫objeto y luego aquí viene el nombre de la etapa.

127
00:06:22,750 --> 00:06:26,300
‫Entonces esta es la etapa del partido, ¿de acuerdo?

128
00:06:26,300 --> 00:06:29,603
‫Y como mencioné, en realidad es solo una consulta.

129
00:06:30,730 --> 00:06:33,570
‫Entonces, digamos que para empezar, solo queremos seleccionar documentos

130
00:06:33,570 --> 00:06:35,200
‫que tengan un promedio

131
00:06:35,200 --> 00:06:39,630
‫de calificaciones mayor o igual a 4. 5.

132
00:06:39,630 --> 00:06:41,110
‫Entonces, ¿puedes hacer eso?

133
00:06:41,110 --> 00:06:43,560
‫Solo te daré un segundo para que lo hagas aquí.

134
00:06:44,730 --> 00:06:46,123
‫Así que espero que lo hayas hecho.

135
00:06:47,090 --> 00:06:50,440
‫Por lo tanto, las calificaciones promedio deben ser mayores

136
00:06:52,240 --> 00:06:55,383
‫o iguales que 4. 5.

137
00:06:56,460 --> 00:06:59,260
‫Y eso es todo, esa es la primera etapa.

138
00:06:59,260 --> 00:07:03,500
‫Y, por lo general, esta etapa del partido es solo una etapa preliminar

139
00:07:03,500 --> 00:07:07,050
‫para luego prepararse para las siguientes etapas que se avecinan.

140
00:07:07,050 --> 00:07:10,173
‫Así que la siguiente es ahora la fase de grupos.

141
00:07:13,000 --> 00:07:14,610
‫Entonces, agrupe y

142
00:07:14,610 --> 00:07:17,840
‫luego allí, siempre debemos pasar solo otro objeto.

143
00:07:17,840 --> 00:07:20,600
‫Así que se ve un poco extraño con todos estos

144
00:07:20,600 --> 00:07:22,870
‫objetos, pero sí, ya lo has visto antes y

145
00:07:22,870 --> 00:07:24,780
‫MongoDB simplemente funciona de esta manera.

146
00:07:24,780 --> 00:07:28,293
‫Siempre son objetos, dentro de objetos, dentro de objetos.

147
00:07:29,520 --> 00:07:32,690
‫Y este grupo aquí es donde ocurre la

148
00:07:32,690 --> 00:07:34,520
‫verdadera magia porque como

149
00:07:34,520 --> 00:07:36,870
‫su nombre lo dice, nos permite

150
00:07:36,870 --> 00:07:38,820
‫agrupar documentos, básicamente usando acumuladores.

151
00:07:38,820 --> 00:07:40,600
‫Y un acumulador es,

152
00:07:40,600 --> 00:07:42,850
‫por ejemplo, incluso calculando un promedio.

153
00:07:42,850 --> 00:07:46,270
‫Entonces, si tenemos cinco recorridos, cada uno de ellos

154
00:07:46,270 --> 00:07:50,250
‫tiene una calificación, podemos calcular la calificación promedio usando el grupo.

155
00:07:50,250 --> 00:07:52,680
‫Y entonces hagamos exactamente eso aquí.

156
00:07:52,680 --> 00:07:55,190
‫Ahora, lo primero es que siempre tenemos

157
00:07:55,190 --> 00:07:58,950
‫que especificar la identificación porque aquí es donde vamos a especificar

158
00:07:58,950 --> 00:08:00,803
‫por qué queremos agrupar.

159
00:08:02,420 --> 00:08:05,480
‫Por ahora, decimos nulo aquí porque queremos

160
00:08:05,480 --> 00:08:08,870
‫tener todo en un grupo para poder calcular las

161
00:08:08,870 --> 00:08:11,600
‫estadísticas de todos los recorridos juntos y

162
00:08:11,600 --> 00:08:13,713
‫no separarlos por grupos.

163
00:08:14,590 --> 00:08:18,250
‫Un poco más tarde, también agruparemos por diferentes cosas, por ejemplo,

164
00:08:18,250 --> 00:08:21,010
‫podemos agrupar por la dificultad y luego podemos,

165
00:08:21,010 --> 00:08:23,900
‫por ejemplo, calcular el promedio para los recorridos

166
00:08:23,900 --> 00:08:26,820
‫fáciles, el promedio para los recorridos medios y

167
00:08:26,820 --> 00:08:29,373
‫el promedio para los recorridos difíciles.

168
00:08:29,373 --> 00:08:32,720
‫Entonces, nuevamente, podemos agrupar por uno de nuestros campos

169
00:08:32,720 --> 00:08:35,750
‫y ese campo, lo especificaremos aquí, pero por

170
00:08:35,750 --> 00:08:39,000
‫ahora, como dije, queremos calcular estos promedios para todos

171
00:08:39,000 --> 00:08:41,803
‫los recorridos juntos en un gran grupo.

172
00:08:42,865 --> 00:08:46,990
‫Entonces, en ese caso, decimos _id y lo establecemos en nulo.

173
00:08:47,994 --> 00:08:51,600
‫Ahora calculemos realmente la calificación promedio.

174
00:08:51,600 --> 00:08:54,423
‫Para hacer eso, simplemente especificamos un

175
00:08:55,320 --> 00:08:58,713
‫nuevo campo, así que llamémoslo simplemente calificación promedio,

176
00:09:01,080 --> 00:09:03,480
‫así, y esto será bueno,

177
00:09:05,620 --> 00:09:07,160
‫el promedio, que

178
00:09:07,160 --> 00:09:11,560
‫es otro operador de MongoDB, así que este de aquí.

179
00:09:11,560 --> 00:09:14,233
‫Lo encontrará en la referencia si lo busca.

180
00:09:15,149 --> 00:09:17,800
‫Entonces, este es un operador matemático que

181
00:09:17,800 --> 00:09:20,520
‫calcula el promedio y ahora el nombre del campo.

182
00:09:20,520 --> 00:09:23,530
‫Y nuevamente, sé que esto se verá muy extraño,

183
00:09:23,530 --> 00:09:26,390
‫pero para especificar el campo del cual queremos

184
00:09:26,390 --> 00:09:29,110
‫calcular el promedio, necesitamos usar el signo

185
00:09:29,110 --> 00:09:31,900
‫de dólar, pero entre comillas aquí y luego

186
00:09:31,900 --> 00:09:33,583
‫el nombre del campo.

187
00:09:34,560 --> 00:09:36,803
‫Entonces, las calificaciones promedian en este caso.

188
00:09:39,316 --> 00:09:41,573
‫Y calculemos también el precio medio.

189
00:09:43,500 --> 00:09:47,143
‫Entonces, el precio promedio, y nuevamente, lo hizo mal aquí, y

190
00:09:48,200 --> 00:09:49,300
‫luego el

191
00:09:50,870 --> 00:09:52,970
‫promedio y luego nuevamente, el nombre

192
00:09:52,970 --> 00:09:55,170
‫del campo y entre comillas y con

193
00:09:55,170 --> 00:09:56,470
‫este signo de dólar.

194
00:09:58,800 --> 00:10:00,890
‫Bien, parece un poco extraño de nuevo,

195
00:10:00,890 --> 00:10:01,900
‫pero esta es

196
00:10:01,900 --> 00:10:04,510
‫solo la forma en que funciona la canalización de agregación.

197
00:10:04,510 --> 00:10:06,300
‫Entonces tenemos el precio medio.

198
00:10:06,300 --> 00:10:08,880
‫De hecho, calculemos también el precio mínimo,

199
00:10:08,880 --> 00:10:12,560
‫es decir, el precio más pequeño y el precio más alto.

200
00:10:12,560 --> 00:10:13,620
‫Así que

201
00:10:15,439 --> 00:10:19,360
‫minPrice y de ahora en adelante, todo se verá similar,

202
00:10:19,360 --> 00:10:21,190
‫así que ahora usamos el

203
00:10:22,200 --> 00:10:26,603
‫operador min y luego nuevamente el nombre del campo como este.

204
00:10:29,783 --> 00:10:32,530
‫Y una coma aquí y ahora simplemente dupliquemos

205
00:10:32,530 --> 00:10:35,053
‫este para calcular el precio máximo.

206
00:10:37,910 --> 00:10:40,310
‫Y ahora, echemos un vistazo a lo que

207
00:10:40,310 --> 00:10:42,160
‫ya tenemos en este punto.

208
00:10:44,240 --> 00:10:47,430
‫Así que ahora tenemos que enviar esta respuesta,

209
00:10:47,430 --> 00:10:49,250
‫y de nuevo,

210
00:10:49,250 --> 00:10:53,513
‫iré y tomaré algunas de estas respuestas ya hechas aquí.

211
00:10:59,154 --> 00:11:01,853
‫Entonces, los datos que queremos enviar se llaman estadísticas.

212
00:11:06,740 --> 00:11:09,610
‫Y ahora todo lo que tenemos que hacer es agregar una nueva

213
00:11:09,610 --> 00:11:12,390
‫ruta aquí en nuestras rutas de viaje y nuevamente, voy a

214
00:11:12,390 --> 00:11:14,543
‫editar aquí, justo en la parte superior.

215
00:11:16,368 --> 00:11:18,690
‫Entonces enrutador. route

216
00:11:21,597 --> 00:11:26,597
‫/ gettour, o simplemente tour-stats, así porque el get

217
00:11:29,460 --> 00:11:33,730
‫ya está definido en el método HTTP.

218
00:11:33,730 --> 00:11:37,090
‫Así que no es necesario repetirlo en el nombre.

219
00:11:37,090 --> 00:11:38,640
‫Entonces tourController. getTourStats.

220
00:11:42,268 --> 00:11:46,707
‫Dale una caja fuerte y probémoslo ahora.

221
00:11:48,270 --> 00:11:52,710
‫Así que estoy realmente emocionado de probarlo ahora, de hecho

222
00:11:52,710 --> 00:11:57,710
‫para ver si funciona porque nuevamente es una herramienta realmente asombrosa y

223
00:11:57,720 --> 00:11:59,370
‫realmente poderosa que

224
00:11:59,370 --> 00:12:01,503
‫te permite hacer muchas cosas.

225
00:12:03,130 --> 00:12:05,280
‫Entonces, envíenos las estadísticas de

226
00:12:06,290 --> 00:12:09,000
‫la gira y ese no es realmente

227
00:12:09,000 --> 00:12:12,600
‫el resultado que estábamos esperando, así que esa es solo

228
00:12:12,600 --> 00:12:15,750
‫la tubería que definimos, pero ya sé por qué.

229
00:12:15,750 --> 00:12:18,950
‫Así que no esperamos el resultado.

230
00:12:18,950 --> 00:12:21,410
‫Así que, básicamente, al igual

231
00:12:21,410 --> 00:12:24,453
‫que una consulta normal, devolverá un objeto agregado.

232
00:12:25,857 --> 00:12:29,770
‫Tan . find devolverá una consulta y. aggregate

233
00:12:29,770 --> 00:12:32,330
‫devolverá un objeto agregado.

234
00:12:32,330 --> 00:12:34,180
‫Y luego, solo cuando

235
00:12:34,180 --> 00:12:36,940
‫lo esperamos, realmente regresa con el resultado.

236
00:12:36,940 --> 00:12:39,850
‫Por eso también definimos esta función aquí como una

237
00:12:39,850 --> 00:12:42,640
‫función asincrónica, para que luego podamos usar await allí

238
00:12:42,640 --> 00:12:44,953
‫y este es el lugar correcto.

239
00:12:45,860 --> 00:12:47,950
‫Vamos a intentarlo otra vez.

240
00:12:47,950 --> 00:12:49,850
‫¡Y aquí vamos!

241
00:12:49,850 --> 00:12:51,250
‫¡Que bien!

242
00:12:51,250 --> 00:12:54,910
‫Tenemos la calificación promedio de todos nuestros tours, tenemos

243
00:12:54,910 --> 00:12:56,720
‫el precio promedio

244
00:12:56,720 --> 00:13:01,720
‫que ves es 1563 y luego el mínimo y el máximo, ¿verdad?

245
00:13:01,910 --> 00:13:04,210
‫Y a partir de nuestros datos, podemos

246
00:13:04,210 --> 00:13:06,410
‫confirmar que esto es cierto.

247
00:13:06,410 --> 00:13:07,770
‫¡Que bien!

248
00:13:07,770 --> 00:13:09,770
‫Realmente genial.

249
00:13:09,770 --> 00:13:11,950
‫Ahora, una cosa más que

250
00:13:11,950 --> 00:13:14,450
‫quiero hacer aquí es calcular el número

251
00:13:14,450 --> 00:13:18,730
‫total de calificaciones que tenemos y también el número total de recorridos.

252
00:13:18,730 --> 00:13:20,700
‫Así que

253
00:13:20,700 --> 00:13:23,090
‫tenemos la calificación promedio

254
00:13:23,090 --> 00:13:27,323
‫aquí y hagámoslo antes, así que numRatings,

255
00:13:28,850 --> 00:13:31,950
‫así y probablemente puedas adivinar

256
00:13:31,950 --> 00:13:36,950
‫que este se llama suma y luego ratingsAverage,

257
00:13:38,500 --> 00:13:43,500
‫o en realidad no ratingsAverage, sino ratingsQuantity, ¿verdad?

258
00:13:43,610 --> 00:13:46,480
‫Ahí es donde se almacena la cantidad de calificaciones

259
00:13:46,480 --> 00:13:49,354
‫y, por lo tanto, la cantidad de calificaciones, el total,

260
00:13:49,354 --> 00:13:51,863
‫será la suma de todas estas juntas.

261
00:13:52,840 --> 00:13:55,090
‫Y ahora, el último es el número de

262
00:13:56,100 --> 00:13:57,880
‫recorridos y ese es un

263
00:13:57,880 --> 00:14:00,660
‫poco más complicado, por lo que es bueno mostrarles aquí.

264
00:14:00,660 --> 00:14:04,570
‫Así que todavía queremos sumar, así que para sumar

265
00:14:04,570 --> 00:14:07,960
‫todo, básicamente, todavía usamos la suma, pero ¿qué

266
00:14:07,960 --> 00:14:10,340
‫vamos a sumar juntos?

267
00:14:10,340 --> 00:14:13,493
‫Bueno, básicamente agregamos uno para cada documento, entonces

268
00:14:14,443 --> 00:14:17,380
‫decimos 1, y eso es todo.

269
00:14:17,380 --> 00:14:19,610
‫Básicamente, para cada documento

270
00:14:19,610 --> 00:14:22,020
‫que pasará por esta canalización,

271
00:14:22,020 --> 00:14:24,960
‫se agregará uno a este contador numérico.

272
00:14:24,960 --> 00:14:29,430
‫Llamémoslo numTours.

273
00:14:29,430 --> 00:14:33,763
‫Entonces, sí, probémoslo ahora, de nuevo.

274
00:14:36,350 --> 00:14:39,320
‫Y de hecho tenemos nuestras nueve giras y

275
00:14:39,320 --> 00:14:41,303
‫ya sabemos que tenemos nueve.

276
00:14:42,650 --> 00:14:46,820
‫Así que estas son todas las estadísticas de todos los recorridos juntos, pero

277
00:14:46,820 --> 00:14:48,890
‫ahora vayamos al siguiente nivel.

278
00:14:48,890 --> 00:14:52,450
‫Como dije antes, ahora podemos agrupar nuestros resultados

279
00:14:52,450 --> 00:14:53,790
‫para diferentes campos.

280
00:14:53,790 --> 00:14:56,870
‫Y comencemos realmente con la dificultad.

281
00:14:56,870 --> 00:14:59,830
‫Y eso es bastante similar a especificar los campos allí abajo,

282
00:14:59,830 --> 00:15:01,990
‫que es simplemente el signo de dólar, y

283
00:15:01,990 --> 00:15:03,570
‫luego el nombre del campo.

284
00:15:03,570 --> 00:15:07,303
‫Entonces $ dificultad, dale una caja fuerte y eso es todo.

285
00:15:08,350 --> 00:15:12,040
‫Envíalo aquí, y ahora tenemos las estadísticas

286
00:15:12,040 --> 00:15:15,950
‫definidas para cada una de estas tres dificultades.

287
00:15:15,950 --> 00:15:18,200
‫Eso es realmente asombroso.

288
00:15:18,200 --> 00:15:20,470
‫Así que esta es la parte que me sorprende.

289
00:15:20,470 --> 00:15:22,170
‫Es absolutamente fantástico.

290
00:15:22,170 --> 00:15:25,020
‫Quiero decir, puedes empezar a ver todo tipo

291
00:15:25,020 --> 00:15:27,260
‫de cosas, todos los tipos de

292
00:15:27,260 --> 00:15:30,890
‫manipulación de datos que puedes hacer usando esta canalización, ¿verdad?

293
00:15:30,890 --> 00:15:33,360
‫Entonces realmente podemos comenzar a analizar cosas,

294
00:15:33,360 --> 00:15:36,170
‫por ejemplo, vemos que los recorridos más fáciles son

295
00:15:36,170 --> 00:15:38,640
‫los que obtienen las calificaciones más bajas

296
00:15:38,640 --> 00:15:41,370
‫con un 4. 6, mientras que los

297
00:15:41,370 --> 00:15:43,980
‫tours medios son los que obtienen las calificaciones más altas.

298
00:15:43,980 --> 00:15:46,750
‫También podemos ver que los

299
00:15:46,750 --> 00:15:49,620
‫tours difíciles son los más caros con

300
00:15:49,620 --> 00:15:54,520
‫un precio medio de 1997, mientras que los más fáciles también son

301
00:15:54,520 --> 00:15:58,010
‫los más baratos con un precio de 1272, ¿no?

302
00:15:58,010 --> 00:15:59,910
‫También vemos que los

303
00:15:59,910 --> 00:16:01,880
‫recorridos más fáciles son los que

304
00:16:01,880 --> 00:16:05,400
‫más tenemos, así que cuatro fáciles y solo dos difíciles, ¿verdad?

305
00:16:05,400 --> 00:16:07,510
‫Entonces, podemos usar esto, por

306
00:16:07,510 --> 00:16:10,693
‫supuesto, para obtener todo tipo de información sobre nuestros datos.

307
00:16:12,350 --> 00:16:13,630
‫Comentemos

308
00:16:13,630 --> 00:16:16,583
‫este aquí y probemos otro, por

309
00:16:17,560 --> 00:16:20,130
‫ejemplo, por calificaciones, por qué

310
00:16:20,130 --> 00:16:22,773
‫no, probemos, veamos qué obtenemos.

311
00:16:24,450 --> 00:16:26,310
‫Entonces, por ejemplo, tenemos dos recorridos, así que básicamente con

312
00:16:26,310 --> 00:16:28,353
‫una calificación de 4. 5, tenemos

313
00:16:29,530 --> 00:16:32,963
‫dos recorridos con 4. 7, una gira con 4. 8, y

314
00:16:34,040 --> 00:16:37,077
‫tres recorridos con 4. 9.

315
00:16:37,077 --> 00:16:39,870
‫Ah, y también aquí abajo, una gira con 4. 6, y así,

316
00:16:39,870 --> 00:16:42,320
‫por ejemplo, una idea que podemos

317
00:16:42,320 --> 00:16:45,680
‫obtener aquí es que los tours muy caros con

318
00:16:45,680 --> 00:16:49,103
‫este precio promedio de 1997 obtienen calificaciones extremadamente buenas.

319
00:16:50,260 --> 00:16:55,260
‫Así que todo tipo de cosas, realmente las que podemos hacer aquí.

320
00:16:55,360 --> 00:16:59,520
‫Deshagámonos de este, agreguemos este de nuevo, y ahora

321
00:16:59,520 --> 00:17:00,975
‫podemos igualar,

322
00:17:00,975 --> 00:17:03,180
‫hacer algunas operaciones con este.

323
00:17:03,180 --> 00:17:08,180
‫Así que solo por diversión, pongamos esta dificultad en mayúsculas.

324
00:17:08,550 --> 00:17:12,370
‫Así que esto, por supuesto, va a ser otro objeto aquí y

325
00:17:13,570 --> 00:17:15,810
‫aquí al frente está el operador.

326
00:17:15,810 --> 00:17:18,873
‫Y entonces el operador en este caso, se llama $ toUpper.

327
00:17:21,150 --> 00:17:25,230
‫Entonces, otro operador de MongoDB.

328
00:17:25,230 --> 00:17:30,140
‫Así que échale un vistazo, y ahora está escrito en mayúsculas.

329
00:17:30,140 --> 00:17:31,290
‫¡Excelente!

330
00:17:31,290 --> 00:17:34,650
‫Así que tenemos la fase de grupos aquí, que está bastante completa.

331
00:17:34,650 --> 00:17:38,180
‫Así que probemos con otra que sea una especie de etapa.

332
00:17:38,180 --> 00:17:42,120
‫Entonces, otro objeto en nuestra matriz para otra etapa más

333
00:17:43,250 --> 00:17:45,380
‫y este se llama sort.

334
00:17:45,380 --> 00:17:49,070
‫Así que ordena y luego, necesitamos otro objeto, y

335
00:17:49,070 --> 00:17:52,190
‫este se completó automáticamente, no sé por qué,

336
00:17:52,190 --> 00:17:54,860
‫y aquí ahora podemos especificar por

337
00:17:54,860 --> 00:17:59,183
‫qué campo queremos ordenar esto y realmente usemos el precio promedio.

338
00:18:00,580 --> 00:18:03,610
‫Y ahora aquí, en la clasificación, necesitamos usar los nombres

339
00:18:03,610 --> 00:18:06,563
‫de campo que especificamos aquí en el grupo.

340
00:18:07,520 --> 00:18:10,630
‫Ya no podemos usar los nombres antiguos porque en este punto

341
00:18:10,630 --> 00:18:11,930
‫ya se han ido.

342
00:18:11,930 --> 00:18:13,610
‫Ya no existen.

343
00:18:13,610 --> 00:18:16,400
‫Entonces, en este punto, en la

344
00:18:16,400 --> 00:18:19,410
‫tubería de agregación, realmente ya tenemos estos resultados.

345
00:18:19,410 --> 00:18:22,790
‫Estos son ahora básicamente nuestros documentos.

346
00:18:22,790 --> 00:18:25,960
‫Entonces, si desea ordenar por precio promedio, entonces este

347
00:18:25,960 --> 00:18:28,943
‫es el nombre de campo que debemos usar.

348
00:18:30,530 --> 00:18:33,070
‫Entonces podemos decir, el precio promedio

349
00:18:33,070 --> 00:18:35,793
‫y luego podemos decir 1 para ascender.

350
00:18:37,680 --> 00:18:38,883
‫Así que probemos eso.

351
00:18:41,550 --> 00:18:43,070
‫Y sí, de hecho.

352
00:18:43,070 --> 00:18:46,480
‫Ese es el más bajo y ese es el más alto.

353
00:18:46,480 --> 00:18:47,820
‫¡Excelente!

354
00:18:47,820 --> 00:18:50,210
‫Así que hicimos muchas cosas.

355
00:18:50,210 --> 00:18:53,480
‫Permítanme mostrarles que también podemos repetir etapas.

356
00:18:53,480 --> 00:18:55,710
‫Así que hagamos otra coincidencia

357
00:18:58,740 --> 00:19:00,930
‫aquí y esta es

358
00:19:00,930 --> 00:19:03,240
‫solo para mostrarles que en realidad

359
00:19:03,240 --> 00:19:07,130
‫podemos repetir etapas y también quiero mostrarles otro operador.

360
00:19:07,130 --> 00:19:11,020
‫Así que ahora seleccionemos por id y recordemos que id es

361
00:19:11,020 --> 00:19:12,920
‫ahora la dificultad, ¿verdad?

362
00:19:12,920 --> 00:19:15,023
‫Así que lo especificamos aquí.

363
00:19:16,820 --> 00:19:20,670
‫Entonces queremos la identificación y ahora un nuevo operador

364
00:19:20,670 --> 00:19:22,500
‫que aún no usamos.

365
00:19:22,500 --> 00:19:26,913
‫Queremos que no sea igual, digamos fácil.

366
00:19:28,210 --> 00:19:29,830
‫Y así, así, seleccionaremos

367
00:19:29,830 --> 00:19:32,260
‫todos los documentos que no sean fáciles.

368
00:19:32,260 --> 00:19:33,880
‫Entonces, en este caso,

369
00:19:33,880 --> 00:19:36,340
‫el que dice medio y difícil, ¿verdad?

370
00:19:36,340 --> 00:19:41,007
‫Entonces, básicamente, excluyendo el que dice fácil, ¿verdad?

371
00:19:42,200 --> 00:19:43,790
‫Nuevamente, no es

372
00:19:43,790 --> 00:19:47,950
‫realmente útil aquí porque eliminará muchos de nuestros datos significativos, pero

373
00:19:47,950 --> 00:19:50,090
‫solo para mostrarle que, por supuesto,

374
00:19:50,090 --> 00:19:51,980
‫podemos hacer coincidir varias veces.

375
00:19:51,980 --> 00:19:54,750
‫Entonces, en este caso, emparejamos una vez antes de

376
00:19:54,750 --> 00:19:58,160
‫hacer el grupo y luego emparejamos una vez que estábamos listos,

377
00:19:58,160 --> 00:19:59,475
‫haciendo el agrupamiento.

378
00:19:59,475 --> 00:20:01,720
‫Ahora, mantengamos esto aquí, fuera de

379
00:20:01,720 --> 00:20:03,798
‫nuestra tubería de agregación, pero

380
00:20:03,798 --> 00:20:06,200
‫lo dejaré aquí, solo para que

381
00:20:06,200 --> 00:20:08,200
‫lo guardes como referencia.

382
00:20:09,580 --> 00:20:12,750
‫Vuelva a guardarlo, inténtelo de nuevo, y estos son

383
00:20:12,750 --> 00:20:14,730
‫nuestros resultados para obtener las

384
00:20:14,730 --> 00:20:16,590
‫estadísticas de nuestro recorrido.

385
00:20:16,590 --> 00:20:19,030
‫Muy bonito, realmente genial.

386
00:20:19,030 --> 00:20:21,070
‫Espero que hayan disfrutado de

387
00:20:21,070 --> 00:20:23,200
‫este video y en el siguiente,

388
00:20:23,200 --> 00:20:26,810
‫seguiremos usando la canalización de agregación para hacer algunos cálculos más.

389
00:20:26,810 --> 00:20:30,050
‫Y para mostrarte algunas etapas más diferentes.

390
00:20:30,050 --> 00:20:31,973
‫Así que estad atentos a ese.

