‫Uomo: Ehi, ecco. Quindi in questo
‫video continueremo a lavorare con la pipeline di aggregazione.
‫E adoro questo video perché
‫in questo risolveremo un vero problema di affari.
‫Quindi immaginiamo che stiamo davvero sviluppando questa
‫applicazione per la Nature's Company.
‫E quindi diciamo che ci
‫chiedono di implementare una funzione per calcolare
‫il mese più trafficato di un dato anno.
‫Quindi fondamentalmente calcolando quanti tour
‫iniziano in ciascuno dei mesi dell'anno dato.
‫E la compagnia ha davvero bisogno di
‫questa messa a punto per prepararsi di conseguenza per
‫questi tour, come assumere guide turistiche o acquistare l'attrezzatura e gestire
‫tutte le cose del genere.
‫Quindi questo è un vero problema aziendale
‫che ora possiamo risolvere
‫utilizzando le pipeline di aggregazione. Va bene?
‫E quindi, questa sara' una vera sfida
‫e io-- spero che sara' davvero
‫divertente risolvere questo tipo di reale bisogno di affari.
‫Almeno se Nature's fosse un vero affare, immagino.
‫Quindi, iniziamo
‫creando nuovamente la funzione.
‫Quindi esporta il punto e lo chiamerò: ottieni
‫un piano mensile.
‫Va bene.
‫E di nuovo sarà un --- un
‫metodo di funzione asincrono, richiedi una risposta o prova il blocco della cache
‫e avrei potuto semplicemente andare a
‫copiarlo da quassù.
‫Ma non importa. Va bene.
‫E uh ora implementiamo anche il percorso uh
‫proprio qui.
‫E devo solo duplicare
‫questa linea, quindi il piano mensile...
‫E poi qui si chiama questo:
‫ottieni un piano mensile. E in realtà vogliamo essere
‫in grado di passare un anno nell'URL. E quindi usiamo
‫un parametro URL per questo. Va bene.
‫Quindi ehm...
‫tornando qui iniziamo
‫definendo l'anno.
‫Quindi l'anno viene da req dot params dot year.
‫Ricordalo e poi ancora
‫quel trucco per trasformarlo in un
‫numero. Va bene?
‫Quindi creerò la variabile
‫del piano che attenderà il tour dot aggregate.
‫Quindi proprio come prima e per
‫ora lo lascerò vuoto qui.
‫E copierò questo pezzo di codice
‫per inviare i risultati.
‫E questo si chiama piano e va bene.
‫Quindi ora siamo pronti per iniziare la nostra pipeline di
‫aggregazione proprio come abbiamo fatto nell'ultimo video.
‫Ora per iniziare, diamo un'occhiata
‫ai risultati completi.
‫Solo così possiamo avere un'idea migliore di
‫ciò che effettivamente abbiamo bisogno di costruire qui.
‫Quindi cerchiamo di ottenere tutti i tour e di eliminare
‫completamente questa stringa di query.
‫E così qui abbiamo tutti e nove
‫i tour e ognuno dei tour, ricorda, ha una
‫serie di queste date di inizio.
‫Quindi un tour inizierà il 25 aprile 2021.
‫Quindi il prossimo inizia il 20 luglio e poi il
‫5 ottobre. Va bene.
‫Quindi il prossimo ha questa data di inizio
‫e credo che tutti abbiano tre date di inizio.
‫Va bene? Quindi, queste date sono ciò di
‫cui abbiamo effettivamente bisogno come punto di partenza per creare questa
‫funzione o per creare questa pipeline di aggregazione.
‫Perché ricorda, vogliamo contare quanti tour ci sono per ciascuno
‫dei mesi di un dato anno.
‫E quindi cerchiamo di analizzare il 2021, ok?
‫Abbiamo un tour ad aprile, uno a luglio, uno a ottobre.
‫Allora diamo un'occhiata al prossimo tour.
‫Qui ne abbiamo uno a giugno, uno a luglio e uno ad agosto.
‫Quindi a luglio ne abbiamo già due.
‫Quindi questo e questo.
‫Il prossimo ne abbiamo uno a marzo, uno a maggio
‫e uno a giugno. Quindi a giugno ne abbiamo già anche due.
‫Va bene? E così possiamo continuare
‫a farlo manualmente, ma ovviamente vogliamo farlo con la nostra aggregazione.
‫Quindi, se vuoi aggiungere tutto
‫questo insieme, il modo più semplice sarebbe fondamentalmente avere
‫un tour per ciascuna di queste date qui, giusto?
‫E possiamo effettivamente farlo utilizzando la pipeline di aggregazione.
‫C'è una fase per fare esattamente questo.
‫E questo si chiama rilassarsi.
‫Quindi usiamolo ora e poi ti
‫mostrerò uh-- il risultato e perché ne abbiamo davvero bisogno.
‫Va bene? Quindi, di nuovo definiamo
‫un oggetto e poi il nome della tappa.
‫E in questo caso lo è: rilassati. Va bene?
‫E ciò che farà unwind è fondamentalmente decostruire
‫un campo array dai
‫documenti informativi e quindi produrre un documento per ogni elemento dell'array.
‫E quindi è quello che dicevo prima.
‫Cioè, in pratica vogliamo avere un tour per
‫ciascuna di queste date nell'array. Va bene?
‫E questa fase può essere davvero utile per tanti casi.
‫Quindi, il campo con l'array che vogliamo srotolare
‫è data di inizio.
‫D'accordo e quindi per ora è tutto.
‫Quindi voglio solo mostrarti il risultato di ciò in questo momento.
‫E penso che abbiamo già tutto a
‫posto perché funzioni. Quindi tieni presente che
‫il percorso si chiama piano mensile e quindi con un anno.
‫Che per ora non avrà
‫alcun risultato, ma dobbiamo definirlo comunque.
‫Quindi piano mensile e anno 2021.
‫Quindi inviamo questo ora.
‫E infatti ora abbiamo questa data di inizio non
‫più come un array ma solo questo primo elemento
‫dell'array che avevamo prima.
‫Mettiamoli fianco a fianco. E quindi vedete, l'abbiamo fatto
‫o effettivamente lo facciamo con il primo.
‫Quindi abbiamo avuto il primo acquirente per il 25
‫aprile, il 20 luglio e il 5 ottobre.
‫E così ora abbiamo il primo escursionista in questa data qui,
‫poi abbiamo il primo escursionista il 20 luglio,
‫e ora avremo il primo escursionista per il 5 ottobre.
‫Quindi, esattamente il risultato che
‫volevamo perché ora abbiamo un documento per ciascuna delle date.
‫Va bene? Quindi invece di avere nove, ora abbiamo 27
‫che è nove per tre. Va bene.
‫Allora, questo è il primo appuntamento. Ora andiamo avanti
‫e selezioniamo i documenti per l'anno passato.
‫Va bene? E ricorda quale fase
‫usiamo per quello che è giusto, usiamo match.
‫Quindi ricorda, la corrispondenza è fondamentalmente per selezionare i documenti.
‫Quindi solo per fare una query.
‫E così l'anno è nelle date di inizio.
‫Quindi le date di inizio sono quelle che cercheremo.
‫Quindi date di inizio, e ora cosa vogliamo?
‫Bene, vogliamo che la data fondamentalmente sia maggiore del
‫1 gennaio dell'anno in corso,
‫quindi diciamo 2021. E vogliamo che
‫sia inferiore al 1° gennaio 2022, d'accordo.
‫Quindi fondamentalmente vogliamo che sia il 2020 e il 2022. Va bene?
‫Quindi mettiamolo nel codice ora.
‫Quindi le date di inizio e quindi abbiamo bisogno
‫di un altro oggetto per gli operatori. Quindi, maggiore o uguale
‫a e in MongoDB funziona perfettamente con le date.
‫Quindi Mongo è in realtà perfetto per lavorare con le date
‫come fare confronti di date. Quindi funziona davvero alla grande.
‫Quindi ora abbiamo effettivamente bisogno di definire una nuova data
‫qui in modo che possa essere confrontata con la data che è
‫in ciascuno dei documenti.
‫Quindi la formula della data è anno, mese e data.
‫E quindi facciamo una stringa modello qui
‫e usiamo la nostra variabile anno.
‫Quindi il 1° gennaio.
‫Quindi, vogliamo che la nostra data sia
‫maggiore o uguale al 1 gennaio 2021 e scriviamolo qui solo per
‫tenerlo a mente. E vogliamo che sia
‫inferiore a, o possiamo dire inferiore a, uguale.
‫Andiamo avanti e copiamo questo e poi il
‫31 dicembre. Va bene? Quindi, fondamentalmente vogliamo che sia
‫tra il primo giorno dell'anno e l'ultimo giorno
‫dell'anno in corso. Va bene?
‫Quindi continuiamo a testarlo, quindi lo proverò ora
‫dopo ciascuna delle fasi. Quindi inviando questo
‫e ora dovremmo avere solo tour qui che sono nel 2021.
‫Quindi confermiamo che il 2021, anche qui, anche
‫qui, anche qui.
‫Mm, quindi vedi, non abbiamo davvero nessun altro anno. Destra.
‫È sempre il 2021. Va bene? Quindi penso che abbiamo visto abbastanza.
‫E così, torniamo indietro. Il prossimo è dove avviene la magia.
‫E così di solito è nella fase a gironi.
‫Quindi aggiungiamo il gruppo qui, proprio come prima,
‫quindi raggruppa e ricorda che dobbiamo specificare il campo ID
‫fondamentalmente per dire cosa vogliamo usare per raggruppare i nostri documenti.
‫Ora vogliamo raggrupparli per mesi, giusto?
‫Ma attualmente abbiamo semplicemente l'intera data,
‫con l'anno, il mese, la data e persino l'ora.
‫Quindi immagino che siano le 10 del mattino o qualcosa del genere.
‫Ma ancora una volta vogliamo solo il mese. Quindi lascia che ti
‫mostri solo un altro come magico operatore MongoDB.
‫Allora, dov'è? Quindi, qui, in questo riferimento qui
‫abbiamo effettivamente un paio di operatori di pipeline di aggregazione.
‫Ed è qui che abbiamo questo operatore di
‫appuntamenti davvero utile. Quindi diamo un'occhiata a questo.
‫E quello che useremo è il mese.
‫Quindi torna al mese per una data come numero.
‫E quindi questo fondamentalmente estrarrà il
‫mese dalla nostra data. E ci sono molti altri operatori.
‫In questo modo, ad esempio, potremmo anche calcolare la settimana
‫o solo l'anno, ok?
‫Ma la settimana potrebbe anche essere molto utile.
‫Ma manteniamolo con il mese. Va bene?
‫Quindi, di nuovo, puoi dare un'occhiata a
‫questi uh-- operatori di aggregazione speciali.
‫Perché ce ne sono un sacco, come vedete qui.
‫Va bene? Quindi in realtà questi operatori
‫che stiamo usando qui nella pipeline di aggregazione sono ehm, sì, proprio quello.
‫Sono operatori di pipeline di aggregazione.
‫Abbiamo fasi e quindi operatori che possiamo utilizzare. Va bene.
‫E in questo caso, ancora una volta, usiamo il mese.
‫E poi ancora il nome del
‫campo, da cui in pratica vogliamo estrarre la data.
‫Va bene, salvalo, poi l'errore scompare, ok.
‫Quindi lo stiamo raggruppando ora per mese.
‫E ora la vera informazione
‫che vogliamo per ogni mese è quanti tour iniziano in quel mese?
‫Destra? E per questo tutto ciò
‫che faremo sarà fondamentalmente contare la quantità di tour che hanno un determinato mese, giusto?
‫Quindi inizia il numero di tour.
‫E quindi questo è in realtà
‫molto simile a quello che abbiamo fatto prima.
‫Quindi usiamo add e poi per ciascuno dei
‫documenti ne aggiungiamo uno. Quindi, proprio come abbiamo fatto prima.
‫Ma in realtà è somma e non aggiunta, ok, proprio come qui quando
‫abbiamo contato i tour per ciascuna delle difficoltà, abbiamo semplicemente
‫aggiunto il numero uno per ciascuno dei documenti.
‫E quindi qui facciamo lo stesso.
‫Va bene, allora proviamo di nuovo questo.
‫E ci stiamo già avvicinando molto al nostro risultato finale.
‫E infatti, ci siamo. Quindi abbiamo febbraio con un tour.
‫Dicembre con un tour, abbiamo novembre o addirittura
‫settembre con due tour.
‫E poi abbiamo due tour in tutto
‫questo qui in realtà abbiamo tre tour a luglio.
‫Quindi questo si sta avvicinando molto al nostro risultato.
‫Quindi è assolutamente fantastico.
‫Quindi questa parte qui, che penso sia stata la più
‫difficile, sta già funzionando.
‫Va bene.
‫Ora in realtà vogliamo qualche informazione in più
‫che non è solo quanti tour
‫ma anche quali tour? Quindi facciamolo.
‫Quindi, se vuoi informazioni su quali tour dovrebbero
‫essere effettivamente un array.
‫Destra? Perché altrimenti come
‫potremmo specificare due o tre tour diversi in un campo, giusto?
‫E quindi fondamentalmente vogliamo creare un array
‫e lo facciamo usando push e poi
‫quello che inseriremo in quell'array mentre ogni documento
‫passa attraverso questa pipeline è semplicemente il nome
‫del documento, o in realtà
‫il campo del nome. Quindi non il nome del documento ma
‫il campo del nome.
‫Quindi in questo caso il nome del tour. Ok, allora proviamolo.
‫E...
‫bam, ci siamo!
‫Quindi ora abbiamo anche il nome dei tour lì dentro.
‫Così fantastico. Vediamo, sì. Qui abbiamo tutti e tre.
‫Avanti, cambiamo davvero il nome di
‫questo campo qui, ok?
‫Ora non cambierà davvero, ma aggiungeremo semplicemente un altro
‫campo che avrà lo stesso valore qui
‫in modo che in seguito possiamo sostanzialmente eliminare questo ID.
‫Ok, quindi per questo useremo la fase successiva che
‫si chiama: aggiungi campo.
‫Quindi aggiungi il campo e
‫questo è abbastanza semplice. Fa semplicemente quello che dice.
‫Quindi aggiungi campo viene utilizzato per aggiungere campi e in
‫realtà si chiama aggiungi campi.
‫E così ora, il nome che vogliamo aggiungere o il campo
‫si chiama mese e ha il valore del campo
‫con il nome ID.
‫Va bene. Quindi, piuttosto semplice,
‫semplicemente il nome del campo e poi il valore.
‫Che, come al solito, dobbiamo usare il simbolo del dollaro.
‫Va bene, solo per testarlo di nuovo.
‫Infatti ora abbiamo il mese.
‫Quindi il prossimo passo, sbarazziamoci di questo e quindi
‫usiamo project.
‫Quindi sto davvero cercando di mettere qui più fasi che posso per--
‫per mostrarti davvero tutto quello che posso.
‫Allora come funziona il progetto? Bene, diamo semplicemente a
‫ciascuno dei nomi di campo uno zero o uno.
‫Quindi lascia che te lo mostri. Quindi possiamo dire ID e
‫impostarlo su zero. E questo farà in
‫modo che l'ID non venga più visualizzato. Se ne metto uno
‫qui, beh, allora verrebbe davvero fuori, ok?
‫Quindi questo non lo testerò. Vorrei solo aggiungere il
‫prossimo che è il tipo che credo di aver usato prima, ma voglio comunque
‫ordinarlo qui in base al numero o ai tour.
‫Ok, quindi in questo momento non è utile al 100% che ci manca ancora
‫perché dovremmo effettivamente ordinarlo per uh, proprio per il numero
‫di inizi del tour.
‫Quindi il nome del campo è il numero di inizio del tour e ricordate
‫che ne avevamo uno prima che era per la salita e meno uno
‫che era per la discesa e ovviamente è
‫quello che vogliamo.
‫Quindi a partire dal numero più alto.
‫Quindi dovrebbero essere tre nel nostro caso e sì, lo è.
‫Quindi luglio è il mese più impegnativo con tre tour
‫iniziati: Forest Hiker, Sea Explorer e Sports Lover.
‫Ok, quindi è quasi finito.
‫Lascia che te ne mostri solo uno, uh l'ultimo stadio
‫qui che non è molto utile qui,
‫ma volevo mostrartelo comunque.
‫Quindi abbiamo il limite, e questo è esattamente lo stesso
‫del limite nella query uh. Quindi in pratica ci
‫permetterà di avere solo sei documenti qui.
‫Va bene quindi fondamentalmente sei uscite.
‫Ok, proviamolo, quindi ora dovremmo averne solo
‫sei.
‫Uno, due, tre, quattro, cinque e sei. Va bene.
‫Di nuovo, non molto utile perché taglierebbe il sesto
‫mese meno grande, cosa che non vogliamo.
‫Quindi impostiamolo semplicemente su 12
‫qui, solo così possiamo lasciarlo qui come riferimento per te.
‫Va bene, quindi ancora una volta, ma dovrebbe funzionare ora e
‫il vero problema aziendale ora è risolto.
‫E so che questo è un bel po' di pezzi
‫commoventi che abbiamo qui. Molte fasi diverse.
‫E quindi so che è molto per te da accettare in questo momento.
‫Ma non preoccuparti, non devi sapere tutte
‫queste cose contemporaneamente.
‫Con la pratica continuerai a migliorare e
‫saprai quando utilizzare quale degli strumenti che
‫hai a tua disposizione.
‫Tieni presente che puoi sempre leggere la
‫documentazione che è un materiale didattico completo e davvero eccezionale
‫oltre a questo corso, ok?
‫E questo vale per tutte le tecnologie
‫che stiamo imparando qui.
‫Quindi ti incoraggio davvero a studiare sempre la documentazione.
‫E so che può essere davvero spaventoso guardarlo e senza
‫questo corso sarebbe molto più difficile imparare dalla
‫documentazione, ma con
‫questo ottimo punto di partenza
‫che ottieni in questi video è molto
‫più facile per te mantenere
‫imparando sempre di più, usando quella documentazione, ok?
‫Quindi non mi aspetto che tu risolva questa
‫sfida da solo, ovviamente, motivo per cui l'abbiamo fatto
‫praticamente insieme qui, giusto?
‫Ma spero che tu ti sia divertito tanto
‫quanto me perché, ancora una volta, mi piace molto risolvere questo tipo di problemi
‫è-- è davvero divertente, penso.
‫Ma comunque, ora basta parlare.
‫Nel resto della sezione parleremo ora di
‫un paio di uh, altre funzionalità che abbiamo a disposizione
‫in Mongo, quindi anche questo dovrebbe essere piuttosto divertente.