﻿1
00:00:01,100 --> 00:00:02,450
‫Narratore: Bentornato.

2
00:00:02,450 --> 00:00:04,570
‫In questo video e

3
00:00:04,570 --> 00:00:06,820
‫nel prossimo voglio presentarti la

4
00:00:06,820 --> 00:00:10,680
‫pipeline di aggregazione MongoDB che è un framework MongoDB

5
00:00:10,680 --> 00:00:13,750
‫estremamente potente ed estremamente utile per l'aggregazione

6
00:00:13,750 --> 00:00:15,433
‫dei dati.

7
00:00:17,180 --> 00:00:19,020
‫E l'idea è

8
00:00:19,020 --> 00:00:21,900
‫che fondamentalmente definiamo una pipeline attraverso la

9
00:00:21,900 --> 00:00:24,070
‫quale passano tutti i documenti

10
00:00:24,070 --> 00:00:26,470
‫di una certa raccolta, dove

11
00:00:26,470 --> 00:00:30,870
‫vengono elaborati passo dopo passo per trasformarli in risultati aggregati.

12
00:00:30,870 --> 00:00:33,660
‫Ad esempio, possiamo usare la pipeline di aggregazione

13
00:00:33,660 --> 00:00:36,190
‫per calcolare le medie o calcolare i

14
00:00:36,190 --> 00:00:39,010
‫valori minimi e massimi o possiamo calcolare anche

15
00:00:39,010 --> 00:00:41,380
‫le distanze, e possiamo davvero fare

16
00:00:41,380 --> 00:00:43,590
‫tutti i tipi di cose.

17
00:00:43,590 --> 00:00:46,220
‫È davvero sorprendente quanto sia potente

18
00:00:46,220 --> 00:00:48,440
‫questa pipeline di aggregazione.

19
00:00:48,440 --> 00:00:50,530
‫Va bene, ma basta parlare.

20
00:00:50,530 --> 00:00:53,900
‫Ora iniziamo effettivamente a utilizzare la pipeline di aggregazione

21
00:00:53,900 --> 00:00:57,122
‫e creerò una nuova funzione di intestazione qui perché

22
00:00:57,122 --> 00:01:00,290
‫in seguito definiremo un nuovo percorso e quindi

23
00:01:00,290 --> 00:01:02,583
‫utilizzeremo quella funzione per questo.

24
00:01:03,610 --> 00:01:06,093
‫Ma quel nuovo percorso, lo creerò più tardi.

25
00:01:07,495 --> 00:01:09,720
‫Quindi voglio creare una funzione

26
00:01:09,720 --> 00:01:13,756
‫qui che calcoli un paio di statistiche sui nostri tour.

27
00:01:13,756 --> 00:01:16,987
‫Quindi chiamerò questo getTourStats.

28
00:01:19,070 --> 00:01:21,860
‫Ok, quindi Statistiche per le statistiche,

29
00:01:21,860 --> 00:01:23,770
‫e sarà una

30
00:01:23,770 --> 00:01:28,770
‫funzione asincrona e quindi un codice vs ora viene automaticamente precompilato.

31
00:01:29,140 --> 00:01:33,923
‫Va bene, creiamo o proviamo il blocco catch qui.

32
00:01:38,010 --> 00:01:41,970
‫In realtà, lo copierò da qui in

33
00:01:41,970 --> 00:01:45,600
‫alto, e ora qui creerò una

34
00:01:45,600 --> 00:01:47,703
‫variabile chiamata stats.

35
00:01:50,120 --> 00:01:54,600
‫Ora la pipeline di aggregazione è davvero una funzionalità di MongoDB.

36
00:01:54,600 --> 00:01:57,330
‫Ma Mongoose, ovviamente, ci dà accesso ad

37
00:01:57,330 --> 00:02:01,210
‫esso, in modo che possiamo usarlo nel driver Mongoose, giusto?

38
00:02:01,210 --> 00:02:04,070
‫Quindi, usando il nostro modello di

39
00:02:04,070 --> 00:02:07,217
‫tour per accedere alla raccolta di tour,

40
00:02:07,217 --> 00:02:10,053
‫diciamo tour. aggregato.

41
00:02:12,580 --> 00:02:15,250
‫E così la pipeline di aggregazione è

42
00:02:15,250 --> 00:02:18,847
‫un po' come una normale query e quindi usare la

43
00:02:18,847 --> 00:02:22,512
‫pipeline di aggregazione è un po' come fare una normale query.

44
00:02:22,512 --> 00:02:25,550
‫La differenza qui è che nelle aggregazioni, come

45
00:02:25,550 --> 00:02:28,620
‫ho già detto, possiamo manipolare i dati in

46
00:02:28,620 --> 00:02:30,750
‫un paio di passaggi diversi

47
00:02:30,750 --> 00:02:33,400
‫e quindi ora definiamo effettivamente questi passaggi.

48
00:02:33,400 --> 00:02:37,093
‫E per questo, passiamo in una serie di cosiddetti stadi.

49
00:02:38,150 --> 00:02:41,050
‫Quindi passiamo in un array, e poi

50
00:02:41,050 --> 00:02:43,110
‫qui avremo molte fasi.

51
00:02:43,110 --> 00:02:46,540
‫E di nuovo i documenti passano attraverso queste fasi

52
00:02:46,540 --> 00:02:50,350
‫uno per uno, passo dopo passo nella sequenza di definizione

53
00:02:50,350 --> 00:02:52,462
‫come la definiamo qui.

54
00:02:52,462 --> 00:02:54,860
‫Quindi ciascuno degli elementi in questa

55
00:02:54,860 --> 00:02:56,970
‫matrice sarà una delle fasi.

56
00:02:56,970 --> 00:02:59,470
‫E ci sono un sacco di fasi

57
00:02:59,470 --> 00:03:02,110
‫diverse tra cui possiamo scegliere, ma ti dirò

58
00:03:02,110 --> 00:03:04,200
‫solo le più comuni in questa

59
00:03:04,200 --> 00:03:06,070
‫lezione e anche nella prossima.

60
00:03:06,070 --> 00:03:08,400
‫Ma comunque, ora voglio prendere un

61
00:03:08,400 --> 00:03:11,500
‫minuto e dare una rapida occhiata alla documentazione MongoDB

62
00:03:11,500 --> 00:03:13,853
‫perché penso che non l'abbiamo ancora fatto.

63
00:03:17,285 --> 00:03:20,840
‫Quindi MongoDB e conosciamo già questo sito.

64
00:03:20,840 --> 00:03:24,460
‫Quindi sul nostro sito Web MongoDB andiamo qui

65
00:03:24,460 --> 00:03:27,840
‫per imparare, quindi documentazione e poi

66
00:03:27,840 --> 00:03:32,380
‫qui selezioniamo il manuale MongoDB e questa documentazione è enorme.

67
00:03:32,380 --> 00:03:34,480
‫Ha davvero un sacco di cose

68
00:03:34,480 --> 00:03:36,450
‫qui e se dovessi affrontarle

69
00:03:36,450 --> 00:03:39,623
‫tutte, beh, allora diventeresti davvero un maestro di MongoDB.

70
00:03:40,600 --> 00:03:44,010
‫Quindi ti dà una bella introduzione a MongoDB,

71
00:03:44,010 --> 00:03:45,760
‫hai l'installazione qui.

72
00:03:45,760 --> 00:03:49,610
‫Hai le operazioni CRUD, quindi una bella panoramica

73
00:03:49,610 --> 00:03:51,340
‫su molte delle

74
00:03:51,340 --> 00:03:54,610
‫cose che abbiamo già imparato prima, giusto?

75
00:03:54,610 --> 00:03:56,960
‫Poi hai cose sull'aggregazione e in

76
00:03:57,800 --> 00:04:00,390
‫particolare, la pipeline di aggregazione di cui

77
00:04:00,390 --> 00:04:02,320
‫parleremo ora, ma quello

78
00:04:02,320 --> 00:04:04,730
‫che voglio mostrarti qui è in

79
00:04:04,730 --> 00:04:08,210
‫realtà questo riferimento che abbiamo in fondo perché nel

80
00:04:08,210 --> 00:04:10,750
‫riferimento abbiamo qui per esempio gli operatori

81
00:04:10,750 --> 00:04:12,880
‫ed è lì che abbiamo

82
00:04:12,880 --> 00:04:16,570
‫un sacco di cose importanti che usiamo tutto il tempo.

83
00:04:16,570 --> 00:04:18,430
‫Quindi diamo un'occhiata qui agli

84
00:04:18,430 --> 00:04:22,200
‫operatori di query, ad esempio e qui vedete, in realtà abbiamo

85
00:04:22,200 --> 00:04:24,210
‫questi operatori che abbiamo già usato.

86
00:04:24,210 --> 00:04:26,970
‫Quindi, ad esempio, maggiore o uguale a, o

87
00:04:26,970 --> 00:04:29,560
‫minore e uguale, ma se un

88
00:04:29,560 --> 00:04:32,200
‫giorno nelle tue applicazioni hai bisogno di

89
00:04:32,200 --> 00:04:35,170
‫qualche altro operatore, beh, ora sai dove puoi trovarli.

90
00:04:35,170 --> 00:04:37,570
‫Ora, ovviamente, è anche sempre molto

91
00:04:37,570 --> 00:04:40,370
‫utile fare una rapida ricerca su Google,

92
00:04:40,370 --> 00:04:43,490
‫probabilmente trovare qualche post di overflow dello stack

93
00:04:43,490 --> 00:04:45,687
‫a riguardo, ma credetemi, molte

94
00:04:45,687 --> 00:04:49,790
‫volte è più facile e veloce saltare rapidamente alla documentazione e

95
00:04:49,790 --> 00:04:52,763
‫cercare rapidamente qualunque cosa tu ' ho bisogno.

96
00:04:53,700 --> 00:04:56,350
‫Hai solo bisogno di sapere come funziona

97
00:04:56,350 --> 00:04:59,050
‫la documentazione e una volta che lo sai, sarà

98
00:04:59,050 --> 00:05:02,473
‫abbastanza facile per te trovare quello che stai cercando, va bene?

99
00:05:03,400 --> 00:05:05,570
‫Qui hai anche alcuni operatori

100
00:05:05,570 --> 00:05:08,920
‫logici, ad esempio, l'operatore OR che abbiamo già usato.

101
00:05:08,920 --> 00:05:13,920
‫Di nuovo, davvero un sacco di cose, operatori geospaziali e ne useremo alcuni

102
00:05:14,120 --> 00:05:16,790
‫in realtà, più tardi, e sì,

103
00:05:16,790 --> 00:05:19,040
‫davvero un sacco di cose.

104
00:05:19,040 --> 00:05:22,280
‫Quindi quello che volevo mostrarti dopo questa conferenza in realtà,

105
00:05:22,280 --> 00:05:24,793
‫sono le fasi della pipeline di aggregazione.

106
00:05:26,680 --> 00:05:29,140
‫Quindi qui ne hai molti

107
00:05:29,140 --> 00:05:32,090
‫e quello che useremo in questa lezione

108
00:05:32,090 --> 00:05:35,410
‫qui è match, per esempio e gruppo,

109
00:05:35,410 --> 00:05:36,820
‫dov'è quello?

110
00:05:36,820 --> 00:05:39,670
‫Sì, gruppo, è molto importante, e quindi, come

111
00:05:39,670 --> 00:05:41,660
‫ho detto, ti mostrerò

112
00:05:41,660 --> 00:05:44,920
‫i più importanti in questa lezione e nella prossima.

113
00:05:44,920 --> 00:05:48,270
‫Ma ancora una volta, se in qualche caso hai bisogno

114
00:05:48,270 --> 00:05:51,110
‫di qualcos'altro, allora vai avanti, vieni qui in questa

115
00:05:51,110 --> 00:05:53,920
‫documentazione e troverai quello che stai cercando.

116
00:05:53,920 --> 00:05:54,753
‫Va bene?

117
00:05:55,740 --> 00:05:58,630
‫Ad ogni modo, ora impariamo come possiamo effettivamente definire

118
00:05:58,630 --> 00:06:00,940
‫una di queste fasi, va bene?

119
00:06:00,940 --> 00:06:03,170
‫E inizierò con la partita.

120
00:06:03,170 --> 00:06:05,330
‫E la corrispondenza è

121
00:06:05,330 --> 00:06:07,890
‫fondamentalmente selezionare o filtrare determinati documenti.

122
00:06:07,890 --> 00:06:09,510
‫E quindi è molto semplice.

123
00:06:09,510 --> 00:06:13,210
‫È proprio come un oggetto filtro in MongoDB, come

124
00:06:13,210 --> 00:06:16,380
‫quello che abbiamo usato tante volte.

125
00:06:16,380 --> 00:06:19,340
‫Quindi ognuno degli stadi è un oggetto

126
00:06:19,340 --> 00:06:22,750
‫e poi ecco che arriva il nome dello stadio.

127
00:06:22,750 --> 00:06:26,300
‫Quindi questa è la fase della partita, ok?

128
00:06:26,300 --> 00:06:29,603
‫E come ho detto, è davvero solo una query.

129
00:06:30,730 --> 00:06:33,570
‫E quindi diciamo che per cominciare, vogliamo solo selezionare

130
00:06:33,570 --> 00:06:35,200
‫documenti che hanno una media

131
00:06:35,200 --> 00:06:39,630
‫di voti maggiore o uguale a 4. 5.

132
00:06:39,630 --> 00:06:41,110
‫Quindi puoi farlo?

133
00:06:41,110 --> 00:06:43,560
‫Ti do solo un secondo per farlo qui.

134
00:06:44,730 --> 00:06:46,123
‫Quindi spero che tu l'abbia fatto.

135
00:06:47,090 --> 00:06:50,440
‫Quindi la media delle valutazioni dovrebbe essere maggiore o

136
00:06:52,240 --> 00:06:55,383
‫uguale a 4. 5.

137
00:06:56,460 --> 00:06:59,260
‫E così è, questa è la prima fase.

138
00:06:59,260 --> 00:07:03,500
‫E di solito questa fase della partita è solo una fase

139
00:07:03,500 --> 00:07:07,050
‫preliminare per poi prepararsi alle fasi successive che verranno.

140
00:07:07,050 --> 00:07:10,173
‫Quindi la prossima è ora la fase a gironi.

141
00:07:13,000 --> 00:07:14,610
‫Quindi raggruppa e poi

142
00:07:14,610 --> 00:07:17,840
‫lì dentro dobbiamo sempre passare solo un altro oggetto.

143
00:07:17,840 --> 00:07:20,600
‫Quindi sembra un po 'strano con tutti questi oggetti,

144
00:07:20,600 --> 00:07:22,870
‫ma, sì, l'hai visto prima e MongoDB

145
00:07:22,870 --> 00:07:24,780
‫funziona proprio in questo modo.

146
00:07:24,780 --> 00:07:28,293
‫Sono sempre oggetti, dentro gli oggetti, dentro gli oggetti.

147
00:07:29,520 --> 00:07:32,690
‫E questo gruppo qui è dove avviene la vera

148
00:07:32,690 --> 00:07:34,520
‫magia perché come dice

149
00:07:34,520 --> 00:07:36,870
‫il nome, ci permette di raggruppare

150
00:07:36,870 --> 00:07:38,820
‫i documenti, fondamentalmente usando accumulatori.

151
00:07:38,820 --> 00:07:40,600
‫E un accumulatore,

152
00:07:40,600 --> 00:07:42,850
‫ad esempio, calcola anche una media.

153
00:07:42,850 --> 00:07:46,270
‫Quindi, se abbiamo cinque tour, ognuno dei quali ha

154
00:07:46,270 --> 00:07:50,250
‫una valutazione, possiamo quindi calcolare la valutazione media utilizzando il gruppo.

155
00:07:50,250 --> 00:07:52,680
‫E quindi facciamo esattamente questo qui.

156
00:07:52,680 --> 00:07:55,190
‫Ora la prima cosa, è che

157
00:07:55,190 --> 00:07:58,950
‫dobbiamo sempre specificare l'id perché è qui che specificheremo

158
00:07:58,950 --> 00:08:00,803
‫per cosa vogliamo raggruppare.

159
00:08:02,420 --> 00:08:05,480
‫Per ora diciamo null qui perché vogliamo avere

160
00:08:05,480 --> 00:08:08,870
‫tutto in un gruppo in modo da poter calcolare

161
00:08:08,870 --> 00:08:11,600
‫le statistiche per tutti i tour insieme

162
00:08:11,600 --> 00:08:13,713
‫e non separarli per gruppi.

163
00:08:14,590 --> 00:08:18,250
‫Poi, un po' più avanti, raggrupperemo anche per cose diverse, ad

164
00:08:18,250 --> 00:08:21,010
‫esempio possiamo raggruppare per difficoltà e quindi possiamo,

165
00:08:21,010 --> 00:08:23,900
‫ad esempio, calcolare la media per i tour

166
00:08:23,900 --> 00:08:26,820
‫facili, la media per i tour medi e

167
00:08:26,820 --> 00:08:29,373
‫la media per i tour difficili.

168
00:08:29,373 --> 00:08:32,720
‫Quindi, di nuovo, possiamo raggruppare per uno dei nostri campi

169
00:08:32,720 --> 00:08:35,750
‫e per quel campo, lo specificheremo qui, ma per

170
00:08:35,750 --> 00:08:39,000
‫ora, come ho detto, vogliamo calcolare queste medie per tutti

171
00:08:39,000 --> 00:08:41,803
‫i tour insieme in un grande gruppo.

172
00:08:42,865 --> 00:08:46,990
‫Quindi in tal caso diciamo _id e lo impostiamo su null.

173
00:08:47,994 --> 00:08:51,600
‫Ora calcoliamo effettivamente la valutazione media.

174
00:08:51,600 --> 00:08:54,423
‫Per farlo, specifichiamo semplicemente un nuovo

175
00:08:55,320 --> 00:08:58,713
‫campo, quindi chiamiamolo semplicemente la valutazione media, quindi

176
00:09:01,080 --> 00:09:03,480
‫così, e questo sarà bene,

177
00:09:05,620 --> 00:09:07,160
‫la media,

178
00:09:07,160 --> 00:09:11,560
‫che è ancora un altro operatore MongoDB, quindi questo qui.

179
00:09:11,560 --> 00:09:14,233
‫Lo troverai nel riferimento se lo cerchi.

180
00:09:15,149 --> 00:09:17,800
‫Quindi questo è un operatore matematico che

181
00:09:17,800 --> 00:09:20,520
‫calcola la media e ora il nome del campo.

182
00:09:20,520 --> 00:09:23,530
‫E ancora, so che sembrerà molto strano, ma

183
00:09:23,530 --> 00:09:26,390
‫per specificare il campo da cui vogliamo calcolare

184
00:09:26,390 --> 00:09:29,110
‫la media, dobbiamo usare il simbolo del

185
00:09:29,110 --> 00:09:31,900
‫dollaro, ma tra virgolette qui e poi

186
00:09:31,900 --> 00:09:33,583
‫il nome del campo.

187
00:09:34,560 --> 00:09:36,803
‫Quindi le valutazioni sono nella media in questo caso.

188
00:09:39,316 --> 00:09:41,573
‫E calcoliamo anche il prezzo medio.

189
00:09:43,500 --> 00:09:47,143
‫Quindi il prezzo medio, e ancora, ha sbagliato qui, e quindi

190
00:09:48,200 --> 00:09:49,300
‫la media

191
00:09:50,870 --> 00:09:52,970
‫e poi di nuovo, il nome

192
00:09:52,970 --> 00:09:55,170
‫del campo e tra virgolette e con

193
00:09:55,170 --> 00:09:56,470
‫questo simbolo del dollaro.

194
00:09:58,800 --> 00:10:00,890
‫Giusto, quindi sembra di nuovo strano, ma

195
00:10:00,890 --> 00:10:01,900
‫questo è solo

196
00:10:01,900 --> 00:10:04,510
‫il modo in cui funziona la pipeline di aggregazione.

197
00:10:04,510 --> 00:10:06,300
‫Quindi abbiamo il prezzo medio.

198
00:10:06,300 --> 00:10:08,880
‫In realtà calcoliamo anche il prezzo

199
00:10:08,880 --> 00:10:12,560
‫minimo, quindi il prezzo minimo, e il prezzo massimo.

200
00:10:12,560 --> 00:10:13,620
‫Quindi minPrice

201
00:10:15,439 --> 00:10:19,360
‫e d'ora in poi sembrerà tutto simile, quindi ora

202
00:10:19,360 --> 00:10:21,190
‫usiamo l'operatore min e

203
00:10:22,200 --> 00:10:26,603
‫poi di nuovo il nome del campo in questo modo.

204
00:10:29,783 --> 00:10:32,530
‫E una virgola qui e ora duplichiamo

205
00:10:32,530 --> 00:10:35,053
‫questo per calcolare il prezzo massimo.

206
00:10:37,910 --> 00:10:40,310
‫E ora, diamo un'occhiata a ciò che abbiamo

207
00:10:40,310 --> 00:10:42,160
‫già ottenuto a questo punto.

208
00:10:44,240 --> 00:10:47,430
‫Quindi ora dobbiamo effettivamente inviare questa risposta, e

209
00:10:47,430 --> 00:10:49,250
‫quindi di nuovo,

210
00:10:49,250 --> 00:10:53,513
‫vado a prendere alcune di queste risposte già fatte qui.

211
00:10:59,154 --> 00:11:01,853
‫Quindi i dati che vogliamo inviare sono chiamati stats.

212
00:11:06,740 --> 00:11:09,610
‫E ora tutto ciò che dobbiamo fare è effettivamente aggiungere

213
00:11:09,610 --> 00:11:12,390
‫una nuova rotta qui nelle nostre rotte del tour e

214
00:11:12,390 --> 00:11:14,543
‫di nuovo, modificherò qui, proprio in alto.

215
00:11:16,368 --> 00:11:18,690
‫Quindi router. route

216
00:11:21,597 --> 00:11:26,597
‫/gettour, o in realtà solo tour-stats, proprio così perché

217
00:11:29,460 --> 00:11:33,730
‫il get è già definito nel metodo HTTP.

218
00:11:33,730 --> 00:11:37,090
‫Quindi non c'è bisogno di ripeterlo nel nome.

219
00:11:37,090 --> 00:11:38,640
‫Quindi tourController. getTourStats.

220
00:11:42,268 --> 00:11:46,707
‫Mettilo al sicuro e ora proviamolo.

221
00:11:48,270 --> 00:11:52,710
‫Quindi sono davvero eccitato nel testarlo ora, in realtà per

222
00:11:52,710 --> 00:11:57,710
‫vedere se funziona perché è davvero uno strumento straordinario e davvero potente

223
00:11:57,720 --> 00:11:59,370
‫che ti permette

224
00:11:59,370 --> 00:12:01,503
‫di fare così tante cose.

225
00:12:03,130 --> 00:12:05,280
‫Quindi tour-stats, invialo e

226
00:12:06,290 --> 00:12:09,000
‫non è proprio il risultato che

227
00:12:09,000 --> 00:12:12,600
‫stavamo aspettando, quindi è solo la pipeline che abbiamo

228
00:12:12,600 --> 00:12:15,750
‫definito, ma so già perché è così.

229
00:12:15,750 --> 00:12:18,950
‫Quindi non abbiamo aspettato il risultato.

230
00:12:18,950 --> 00:12:21,410
‫Quindi questo, in pratica, proprio

231
00:12:21,410 --> 00:12:24,453
‫come una normale query restituirà un oggetto aggregato.

232
00:12:25,857 --> 00:12:29,770
‫Così . find restituirà una query e . aggregate

233
00:12:29,770 --> 00:12:32,330
‫restituirà un oggetto aggregato.

234
00:12:32,330 --> 00:12:34,180
‫E poi solo quando

235
00:12:34,180 --> 00:12:36,940
‫lo aspettiamo, torna effettivamente con il risultato.

236
00:12:36,940 --> 00:12:39,850
‫Questo è anche il motivo per cui abbiamo definito questa funzione qui

237
00:12:39,850 --> 00:12:42,640
‫come una funzione asincrona, in modo che possiamo usare wait lì

238
00:12:42,640 --> 00:12:44,953
‫dentro e quindi questo è il posto giusto.

239
00:12:45,860 --> 00:12:47,950
‫Proviamo di nuovo.

240
00:12:47,950 --> 00:12:49,850
‫Ed eccoci!

241
00:12:49,850 --> 00:12:51,250
‫Così fantastico!

242
00:12:51,250 --> 00:12:54,910
‫Abbiamo la valutazione media di tutti i nostri tour,

243
00:12:54,910 --> 00:12:56,720
‫abbiamo il prezzo medio

244
00:12:56,720 --> 00:13:01,720
‫che vedi è 1563 e quindi il minimo e il massimo, giusto?

245
00:13:01,910 --> 00:13:04,210
‫E dai nostri dati, possiamo effettivamente

246
00:13:04,210 --> 00:13:06,410
‫confermare che questo è vero.

247
00:13:06,410 --> 00:13:07,770
‫Così fantastico!

248
00:13:07,770 --> 00:13:09,770
‫Davvero, davvero fantastico.

249
00:13:09,770 --> 00:13:11,950
‫Ora, un'altra cosa che voglio

250
00:13:11,950 --> 00:13:14,450
‫fare qui è calcolare effettivamente il numero

251
00:13:14,450 --> 00:13:18,730
‫totale di valutazioni che abbiamo e anche il numero totale di tour.

252
00:13:18,730 --> 00:13:20,700
‫Quindi abbiamo

253
00:13:20,700 --> 00:13:23,090
‫la valutazione media qui

254
00:13:23,090 --> 00:13:27,323
‫e facciamolo prima, quindi numRatings, come questo

255
00:13:28,850 --> 00:13:31,950
‫e probabilmente puoi indovinare che

256
00:13:31,950 --> 00:13:36,950
‫questo si chiama sum e poi le valutazioniMedia,

257
00:13:38,500 --> 00:13:43,500
‫o in realtà non valutazioniMedia, ma valutazioniQuantità, giusto?

258
00:13:43,610 --> 00:13:46,480
‫Quindi è lì che viene memorizzato il numero di

259
00:13:46,480 --> 00:13:49,354
‫valutazioni e quindi il numero di valutazioni, il totale,

260
00:13:49,354 --> 00:13:51,863
‫sarà la somma di tutti questi insieme.

261
00:13:52,840 --> 00:13:55,090
‫E ora, l'ultimo, è il numero di

262
00:13:56,100 --> 00:13:57,880
‫tour e quello è un

263
00:13:57,880 --> 00:14:00,660
‫po' più complicato, quindi è carino da mostrarvi qui.

264
00:14:00,660 --> 00:14:04,570
‫Quindi vogliamo ancora sommare, quindi sommare tutto insieme,

265
00:14:04,570 --> 00:14:07,960
‫in pratica, quindi usiamo ancora la somma,

266
00:14:07,960 --> 00:14:10,340
‫ma cosa aggiungeremo insieme?

267
00:14:10,340 --> 00:14:13,493
‫Bene, in pratica ne aggiungiamo uno per ogni

268
00:14:14,443 --> 00:14:17,380
‫documento, quindi diciamo 1, e basta.

269
00:14:17,380 --> 00:14:19,610
‫Quindi fondamentalmente per ogni documento

270
00:14:19,610 --> 00:14:22,020
‫che passerà attraverso questa pipeline, ne

271
00:14:22,020 --> 00:14:24,960
‫verrà aggiunto uno a questo contatore numerico.

272
00:14:24,960 --> 00:14:29,430
‫Chiamiamolo numTours.

273
00:14:29,430 --> 00:14:33,763
‫E quindi, sì, proviamolo ora, di nuovo.

274
00:14:36,350 --> 00:14:39,320
‫E infatti otteniamo i nostri nove tour e sappiamo

275
00:14:39,320 --> 00:14:41,303
‫già che ne abbiamo nove.

276
00:14:42,650 --> 00:14:46,820
‫Quindi queste sono tutte le statistiche per tutti i tour insieme, ma

277
00:14:46,820 --> 00:14:48,890
‫ora passiamo al livello successivo.

278
00:14:48,890 --> 00:14:52,450
‫Come ho detto prima, ora possiamo raggruppare i nostri risultati

279
00:14:52,450 --> 00:14:53,790
‫per diversi campi.

280
00:14:53,790 --> 00:14:56,870
‫E cominciamo con la difficoltà.

281
00:14:56,870 --> 00:14:59,830
‫E quindi è abbastanza simile a specificare i campi laggiù che

282
00:14:59,830 --> 00:15:01,990
‫è semplicemente il simbolo del dollaro, e

283
00:15:01,990 --> 00:15:03,570
‫poi il nome del campo.

284
00:15:03,570 --> 00:15:07,303
‫Quindi $difficoltà, dagli una cassaforte e basta.

285
00:15:08,350 --> 00:15:12,040
‫Invialo qui e ora abbiamo tutte le

286
00:15:12,040 --> 00:15:15,950
‫statistiche definite per ciascuna di queste tre difficoltà.

287
00:15:15,950 --> 00:15:18,200
‫Quindi è davvero, davvero sorprendente.

288
00:15:18,200 --> 00:15:20,470
‫Quindi questa è la parte che mi fa impazzire.

289
00:15:20,470 --> 00:15:22,170
‫È assolutamente fantastico.

290
00:15:22,170 --> 00:15:25,020
‫Voglio dire, puoi iniziare a vedere tutti i

291
00:15:25,020 --> 00:15:27,260
‫tipi di cose, tutti i tipi

292
00:15:27,260 --> 00:15:30,890
‫di manipolazione dei dati che puoi fare usando questa pipeline, giusto?

293
00:15:30,890 --> 00:15:33,360
‫Quindi ora possiamo davvero iniziare ad analizzare le

294
00:15:33,360 --> 00:15:36,170
‫cose, ad esempio, vediamo che i tour più facili

295
00:15:36,170 --> 00:15:38,640
‫sono quelli che ottengono le valutazioni peggiori

296
00:15:38,640 --> 00:15:41,370
‫con un 4. 6, mentre i tour

297
00:15:41,370 --> 00:15:43,980
‫medi sono quelli che ottengono i punteggi più alti.

298
00:15:43,980 --> 00:15:46,750
‫Si vede anche che i

299
00:15:46,750 --> 00:15:49,620
‫tour difficili sono quelli più costosi con

300
00:15:49,620 --> 00:15:54,520
‫un prezzo medio di 1997, mentre quelli più facili sono anche quelli

301
00:15:54,520 --> 00:15:58,010
‫più economici con un prezzo di 1272, giusto?

302
00:15:58,010 --> 00:15:59,910
‫Vediamo anche che i

303
00:15:59,910 --> 00:16:01,880
‫tour più facili sono quelli che

304
00:16:01,880 --> 00:16:05,400
‫abbiamo di più, quindi quattro facili e solo due difficili, giusto?

305
00:16:05,400 --> 00:16:07,510
‫Quindi possiamo usarlo, ovviamente, per

306
00:16:07,510 --> 00:16:10,693
‫ottenere tutti i tipi di informazioni sui nostri dati.

307
00:16:12,350 --> 00:16:13,630
‫Commentiamo questo

308
00:16:13,630 --> 00:16:16,583
‫qui e proviamone un altro, ad

309
00:16:17,560 --> 00:16:20,130
‫esempio, per valutazioni, perché no,

310
00:16:20,130 --> 00:16:22,773
‫proviamo e vediamo cosa otteniamo.

311
00:16:24,450 --> 00:16:26,310
‫Quindi, ad esempio, abbiamo due tour, quindi fondamentalmente con

312
00:16:26,310 --> 00:16:28,353
‫un punteggio di 4. 5, abbiamo

313
00:16:29,530 --> 00:16:32,963
‫due tour con 4. 7, un giro con 4. 8, e

314
00:16:34,040 --> 00:16:37,077
‫tre tour con 4. 9.

315
00:16:37,077 --> 00:16:39,870
‫Oh, e anche quaggiù, un tour con 4. 6, quindi,

316
00:16:39,870 --> 00:16:42,320
‫ad esempio, un'intuizione che possiamo ottenere

317
00:16:42,320 --> 00:16:45,680
‫qui è che i tour molto costosi con

318
00:16:45,680 --> 00:16:49,103
‫questo prezzo medio del 1997 ottengono valutazioni estremamente buone.

319
00:16:50,260 --> 00:16:55,260
‫Quindi tutti i tipi di cose, davvero che possiamo fare qui.

320
00:16:55,360 --> 00:16:59,520
‫Eliminiamo questo, aggiungiamo questo di nuovo, e ora

321
00:16:59,520 --> 00:17:00,975
‫possiamo persino

322
00:17:00,975 --> 00:17:03,180
‫fare alcune operazioni con questo.

323
00:17:03,180 --> 00:17:08,180
‫Quindi, solo per divertimento, mettiamo questa difficoltà in maiuscolo.

324
00:17:08,550 --> 00:17:12,370
‫Quindi questo, ovviamente, sarà un altro oggetto qui e poi

325
00:17:13,570 --> 00:17:15,810
‫qui di fronte c'è l'operatore.

326
00:17:15,810 --> 00:17:18,873
‫Quindi l'operatore in questo caso si chiama $toUpper.

327
00:17:21,150 --> 00:17:25,230
‫Quindi solo, ancora un altro operatore MongoDB.

328
00:17:25,230 --> 00:17:30,140
‫Quindi dai un'occhiata, e ora è scritto in maiuscolo.

329
00:17:30,140 --> 00:17:31,290
‫Grande!

330
00:17:31,290 --> 00:17:34,650
‫Quindi abbiamo la fase a gironi qui che è abbastanza completa.

331
00:17:34,650 --> 00:17:38,180
‫Quindi proviamo un altro che è una sorta di fase.

332
00:17:38,180 --> 00:17:42,120
‫Quindi un altro oggetto nel nostro array per un altro stadio

333
00:17:43,250 --> 00:17:45,380
‫e questo si chiama sort.

334
00:17:45,380 --> 00:17:49,070
‫Quindi ordina e poi lì dentro, abbiamo bisogno di un altro

335
00:17:49,070 --> 00:17:52,190
‫oggetto, e questo tipo di completamento automatico, non so

336
00:17:52,190 --> 00:17:54,860
‫perché, e quindi qui ora possiamo

337
00:17:54,860 --> 00:17:59,183
‫specificare in quale campo vogliamo ordinare questo e usiamo effettivamente il prezzo medio.

338
00:18:00,580 --> 00:18:03,610
‫E ora qui nell'ordinamento abbiamo effettivamente bisogno di usare i

339
00:18:03,610 --> 00:18:06,563
‫nomi dei campi che abbiamo specificato qui nel gruppo.

340
00:18:07,520 --> 00:18:10,630
‫Non possiamo più usare i vecchi nomi perché a questo

341
00:18:10,630 --> 00:18:11,930
‫punto sono già spariti.

342
00:18:11,930 --> 00:18:13,610
‫Non esistono più.

343
00:18:13,610 --> 00:18:16,400
‫Quindi, a questo punto, nella

344
00:18:16,400 --> 00:18:19,410
‫pipeline di aggregazione, abbiamo già questi risultati.

345
00:18:19,410 --> 00:18:22,790
‫Quindi questi sono sostanzialmente i nostri documenti.

346
00:18:22,790 --> 00:18:25,960
‫Quindi, se vuoi ordinare in base al prezzo medio, questo

347
00:18:25,960 --> 00:18:28,943
‫è il nome del campo che dobbiamo usare.

348
00:18:30,530 --> 00:18:33,070
‫Quindi possiamo dire il prezzo medio

349
00:18:33,070 --> 00:18:35,793
‫e quindi possiamo dire 1 per l'aumento.

350
00:18:37,680 --> 00:18:38,883
‫Quindi proviamolo.

351
00:18:41,550 --> 00:18:43,070
‫E sì, infatti.

352
00:18:43,070 --> 00:18:46,480
‫Questo è il più basso e quello è il più alto.

353
00:18:46,480 --> 00:18:47,820
‫Grande!

354
00:18:47,820 --> 00:18:50,210
‫Quindi abbiamo fatto un sacco di cose.

355
00:18:50,210 --> 00:18:53,480
‫Lascia che ti mostri che possiamo anche ripetere le fasi.

356
00:18:53,480 --> 00:18:55,710
‫Quindi facciamo un'altra corrispondenza qui

357
00:18:58,740 --> 00:19:00,930
‫e questa è davvero

358
00:19:00,930 --> 00:19:03,240
‫solo per mostrarti che possiamo effettivamente

359
00:19:03,240 --> 00:19:07,130
‫ripetere le fasi e voglio anche mostrarti un altro operatore.

360
00:19:07,130 --> 00:19:11,020
‫Quindi ora selezioniamo per id e ricordiamo che l'id è

361
00:19:11,020 --> 00:19:12,920
‫ora la difficoltà, giusto?

362
00:19:12,920 --> 00:19:15,023
‫Quindi l'abbiamo appena specificato qui.

363
00:19:16,820 --> 00:19:20,670
‫Quindi vogliamo l'id e ora un nuovo operatore che

364
00:19:20,670 --> 00:19:22,500
‫non abbiamo ancora usato.

365
00:19:22,500 --> 00:19:26,913
‫Vogliamo che non sia uguale a, e diciamo facile.

366
00:19:28,210 --> 00:19:29,830
‫E così, proprio così,

367
00:19:29,830 --> 00:19:32,260
‫selezioneremo tutti i documenti che non sono facili.

368
00:19:32,260 --> 00:19:33,880
‫Quindi in questo caso,

369
00:19:33,880 --> 00:19:36,340
‫quello che dice medio e difficile, giusto?

370
00:19:36,340 --> 00:19:41,007
‫Quindi sostanzialmente, escludendo quello che dice facile, giusto?

371
00:19:42,200 --> 00:19:43,790
‫Quindi, ancora una volta,

372
00:19:43,790 --> 00:19:47,950
‫non è molto utile qui perché ciò toglierà molti dei nostri dati

373
00:19:47,950 --> 00:19:50,090
‫significativi, ma solo per mostrarti che

374
00:19:50,090 --> 00:19:51,980
‫possiamo ovviamente abbinare più volte.

375
00:19:51,980 --> 00:19:54,750
‫Quindi, in questo caso, abbiamo abbinato una volta prima di

376
00:19:54,750 --> 00:19:58,160
‫creare effettivamente il gruppo e poi abbiamo abbinato una volta che eravamo

377
00:19:58,160 --> 00:19:59,475
‫pronti, facendo il raggruppamento.

378
00:19:59,475 --> 00:20:01,720
‫Ora, in realtà teniamolo qui, fuori

379
00:20:01,720 --> 00:20:03,798
‫dalla nostra pipeline di aggregazione,

380
00:20:03,798 --> 00:20:06,200
‫ma lo lascerò qui, solo così

381
00:20:06,200 --> 00:20:08,200
‫lo tieni come riferimento.

382
00:20:09,580 --> 00:20:12,750
‫Fai un altro salvataggio, fai un altro tentativo e quindi

383
00:20:12,750 --> 00:20:14,730
‫questi sono i nostri risultati per

384
00:20:14,730 --> 00:20:16,590
‫ottenere le statistiche del tour.

385
00:20:16,590 --> 00:20:19,030
‫Quindi, davvero bello, davvero fantastico.

386
00:20:19,030 --> 00:20:21,070
‫Spero che questo video ti

387
00:20:21,070 --> 00:20:23,200
‫sia piaciuto e nel prossimo continueremo

388
00:20:23,200 --> 00:20:26,810
‫a utilizzare la pipeline di aggregazione per fare altri calcoli.

389
00:20:26,810 --> 00:20:30,050
‫E per mostrarti alcune fasi più diverse.

390
00:20:30,050 --> 00:20:31,973
‫Quindi tieniti sintonizzato per quello.

