‫Homme : Hé, là. Donc, dans cette
‫vidéo, nous allons continuer à travailler avec le pipeline d'agrégation.
‫Et j'aime vraiment cette vidéo parce que
‫dans celle-ci nous allons résoudre un vrai problème commercial.
‫Imaginons donc que nous développions réellement
‫cette application pour Nature's Company.
‫Et donc disons qu'ils nous
‫demandent d'implémenter une fonction pour calculer
‫le mois le plus chargé d'une année donnée.
‫Donc, en gros, en calculant combien
‫de tournées commencent dans chacun des mois de l'année donnée.
‫Et l'entreprise a vraiment besoin de ce
‫réglage fin pour se préparer en conséquence pour ces
‫visites, comme embaucher des guides touristiques ou acheter l'équipement et gérer
‫toutes les choses comme ça.
‫Il s'agit donc d'un véritable problème métier
‫que nous pouvons désormais
‫résoudre à l'aide de pipelines d'agrégation. D'accord?
‫Et donc, ça va être un vrai défi
‫et j'espère que ça va être
‫vraiment amusant de résoudre ce genre de vrai besoin commercial.
‫Au moins si Nature's était une vraie entreprise, je suppose.
‫Commençons donc par
‫créer à nouveau la fonction.
‫Alors exportez dot et je vais l'appeler :
‫obtenez un forfait mensuel.
‫D'accord.
‫Et encore une fois, ce sera une -
‫une méthode de fonction asynchrone, une réponse de demande ou un bloc de cache d'essai
‫et j'aurais pu simplement aller le
‫copier à partir d'ici.
‫Mais, tant pis. D'accord.
‫Et euh maintenant, implémentons aussi euh la route
‫euh ici.
‫Et je vais juste
‫dupliquer cette ligne donc plan mensuel...
‫Et puis ici celui-ci s'appelle :
‫obtenez un forfait mensuel. Et en fait, nous voulons
‫pouvoir passer un an dans l'URL. Et donc utilisons
‫un paramètre d'URL pour cela. D'accord.
‫Alors euh...
‫en revenant ici, commençons par
‫euh définir l'année.
‫Donc, l'année vient de req dot params dot year.
‫Rappelez-vous cela et encore
‫une fois cette astuce pour le transformer
‫en nombre. D'accord?
‫Ensuite, je vais créer la
‫variable de plan qui attendra l'agrégat de points de tournée.
‫Donc, comme avant et pour l'instant, je
‫vais le laisser vide ici.
‫Et je vais copier ce morceau de code
‫pour ensuite envoyer les résultats.
‫Et celui-ci s'appelle plan et tout va bien.
‫Nous sommes maintenant prêts à démarrer notre pipeline d'agrégation, comme
‫nous l'avons fait dans la dernière vidéo.
‫Maintenant, pour commencer, jetons un coup d'œil
‫aux résultats complets.
‫Juste pour que nous puissions avoir une meilleure
‫idée de ce que nous devons réellement construire ici.
‫Alors obtenons toutes les visites et débarrassons-nous complètement de
‫cette chaîne de requête.
‫Et donc ici, nous avons les neuf
‫tournées et chacune des tournées, rappelez-vous, a un éventail
‫de ces dates de début.
‫Une tournée débutera donc le 25 avril 2021.
‫Ensuite, le prochain commence le 20 juillet puis le
‫5 octobre. D'accord.
‫Ensuite, euh, le prochain a cette date de
‫début et tous, je crois, ont trois dates de début.
‫D'accord? Donc, ces dates sont ce
‫dont nous avons réellement besoin comme point de départ pour créer
‫cette fonction ou pour créer ce pipeline d'agrégation.
‫Parce que rappelez-vous, nous voulons compter le nombre de tournées pour
‫chacun des mois d'une année donnée.
‫Et donc, analysons 2021, d'accord ?
‫Nous avons une tournée en avril, une en juillet, une en octobre.
‫Alors jetons un coup d'œil à la prochaine tournée.
‫Ici, nous en avons un en juin, un en juillet et un en août.
‫Donc en juillet nous en avons déjà deux.
‫Alors celui-ci et celui-ci.
‫Ensuite, nous avons euh, un en mars, un en mai
‫et un en juin. Donc, en juin, nous en avons également déjà deux.
‫D'accord? Et donc nous pouvons continuer et
‫le faire manuellement, mais bien sûr, nous voulons le faire avec notre agrégation.
‫Donc, si vous voulez ajouter tout
‫cela ensemble, le moyen le plus simple serait d'avoir une
‫tournée pour chacune de ces dates ici, n'est-ce pas ?
‫Et nous pouvons le faire en utilisant le pipeline d'agrégation.
‫Il y a une étape pour faire exactement cela.
‫Et cela s'appelle se détendre.
‫Alors utilisons-le maintenant et je vous
‫montrerai ensuite le résultat et pourquoi nous en avons vraiment besoin.
‫D'accord? Donc, encore une fois,
‫nous définissons un objet puis le nom de la scène.
‫Et dans ce cas c'est : détendez-vous. D'accord?
‫Et ce que va faire unwind, c'est essentiellement déconstruire un
‫champ de tableau à partir
‫des documents d'information, puis générer un document pour chaque élément du tableau.
‫Et c'est ce que je disais avant.
‫C'est-à-dire que fondamentalement, nous voulons avoir une tournée pour chacune
‫de ces dates dans le tableau. D'accord?
‫Et cette étape peut être vraiment utile pour tant de cas.
‫Ainsi, le champ avec le tableau que nous voulons dérouler est
‫celui des dates de début.
‫Très bien et pour l'instant c'est en fait tout.
‫Alors je veux juste vous montrer le résultat de ça maintenant.
‫Et je pense que nous avons déjà tout en place
‫pour que cela fonctionne. Gardez donc à l'esprit
‫que l'itinéraire est appelé plan mensuel, puis avec un an.
‫Ce qui pour l'instant n'aura aucun résultat
‫mais euh, nous devons le définir de toute façon.
‫Donc forfait mensuel et année 2021.
‫Alors envoyons ça maintenant.
‫Et en effet, nous avons maintenant euh cette date de début non
‫plus sous forme de tableau mais uniquement ce premier élément du
‫tableau que nous avions auparavant.
‫Mettons-les côte à côte. Et donc vous voyez, nous
‫avons eu ou faisons-le avec le premier.
‫Nous avons donc eu le premier preneur pour les
‫25 avril, 20 juillet et 5 octobre.
‫Et donc maintenant, nous avons le premier randonneur à cette date ici,
‫puis nous avons le premier randonneur le 20 juillet,
‫et maintenant nous aurons le premier randonneur pour le 5 octobre.
‫Donc, exactement le résultat que nous
‫voulions car maintenant nous avons un document pour chacune des dates.
‫D'accord? Ainsi, au lieu d'en avoir neuf, nous en avons
‫maintenant 27, soit neuf fois trois. D'accord.
‫Alors, c'est le premier rendez-vous. Maintenant, allons de
‫l'avant et sélectionnons les documents pour l'année écoulée.
‫D'accord? Et rappelez-vous quelle étape
‫nous utilisons pour cela, nous utilisons le match.
‫Alors rappelez-vous, la correspondance consiste essentiellement à sélectionner des documents.
‫Donc juste pour faire une requête.
‫Et donc l'année est dans les dates de début.
‫Donc les dates de début sont celles que nous allons rechercher.
‫Alors les dates de début, et maintenant que voulons-nous ?
‫Eh bien, nous voulons que la - la date soit essentiellement postérieure
‫au 1er janvier de l'année en
‫cours, disons donc 2021. Et nous voulons que
‫ce soit moins que le 1er janvier 2022, d'accord.
‫Donc, fondamentalement, nous voulons que ce soit 2020 et 2022. D'accord?
‫Mettons cela dans le code maintenant.
‫Donc les dates de début et ensuite nous avons
‫besoin d'un autre objet pour les opérateurs. Donc, supérieur ou égal à
‫et dans MongoDB, cela fonctionne parfaitement avec les dates.
‫Mongo est donc en fait parfait pour travailler avec des dates,
‫comme faire des comparaisons de dates. Donc ça marche vraiment très bien.
‫Alors maintenant, nous devons en fait définir une nouvelle date ici
‫afin que celle-ci puisse ensuite être comparée à la date qui se
‫trouve dans chacun des documents.
‫La formule de la date est donc l'année, le mois et la date.
‫Et donc faisons une chaîne de modèle
‫ici et utilisons notre variable d'année.
‫Donc le 1er janvier.
‫Donc, nous voulons que notre date soit
‫supérieure ou égale au 1er janvier 2021 et écrivons cela ici juste pour
‫le garder à l'esprit. Et nous voulons qu'il soit
‫inférieur à, ou nous pouvons dire inférieur à égal.
‫Allons de l'avant et copions celui-ci, puis le
‫31 décembre. D'accord? Donc, fondamentalement, nous voulons que ce soit
‫entre le premier jour de l'année et le dernier jour
‫de l'année en cours. D'accord?
‫Continuons donc à le tester, je vais donc le tester
‫maintenant après chacune des étapes. Donc envoyer ceci et
‫maintenant nous ne devrions avoir que des tournées ici qui sont en 2021.
‫Alors confirmons que 2021, ici aussi, ici aussi,
‫ici aussi.
‫Mm, alors vous voyez que nous n'avons vraiment pas d'autre année. Droit.
‫C'est toujours 2021. D'accord? Donc je pense que nous en avons assez vu.
‫Et donc, revenons en arrière. Ensuite, c'est là que la magie opère.
‫Et donc c'est généralement dans la phase de groupes.
‫Ajoutons donc le groupe ici, donc comme avant, groupez
‫et rappelez-vous que nous devons spécifier le champ ID essentiellement
‫pour dire ce que nous voulons utiliser pour regrouper nos documents.
‫Maintenant, nous voulons les regrouper par mois, n'est-ce pas ?
‫Mais actuellement, nous avons simplement la date
‫entière, avec l'année, le mois, la date et même l'heure.
‫Donc je suppose qu'il est 10 heures du matin ou quelque chose comme ça.
‫Mais encore une fois, nous ne voulons que le mois. Alors laissez-moi vous
‫montrer juste un autre opérateur magique MongoDB.
‫Alors, où est-ce ? Donc, ici, dans cette référence,
‫nous avons en fait quelques opérateurs de pipelines d'agrégation.
‫Et c'est ici que nous avons cet opérateur de
‫date très pratique. Jetons donc un œil à cela.
‫Et celui que nous allons utiliser est le mois.
‫Il revient donc au mois pour une date sous forme de nombre.
‫Et donc cela va essentiellement extraire
‫le mois de notre date. Et il y a beaucoup d'autres opérateurs.
‫Comme ça par exemple, on pourrait même calculer la semaine ou
‫juste l'année, d'accord ?
‫Mais la semaine pourrait aussi être très pratique.
‫Mais euh, gardons-le avec le mois. D'accord?
‫Encore une fois, vous pouvez jeter un œil
‫à ces euh-- opérateurs d'agrégation spéciaux.
‫Parce qu'il y en a une tonne, comme vous le voyez ici.
‫D'accord? Donc en fait, ces opérateurs
‫que nous utilisons ici dans le pipeline d'agrégation sont euh, ouais exactement cela.
‫Ce sont des exploitants de pipelines d'agrégation.
‫Nous avons des scènes puis des opérateurs que nous pouvons utiliser. D'accord.
‫Et dans ce cas, encore une fois, nous utilisons le mois.
‫Et puis encore le nom
‫du champ, dont nous voulons essentiellement extraire la date.
‫D'accord, faites une sauvegarde, puis cette erreur disparaît, d'accord.
‫Nous le regroupons donc maintenant par mois.
‫Et maintenant, la vraie information que nous
‫voulons pour chacun des mois est combien de tournées commencent ce mois-là ?
‫Droit? Et pour cela, tout ce que
‫nous allons faire, c'est compter le nombre de tournées qui ont un certain mois, n'est-ce pas ?
‫Donc nombre de tournées commence.
‫Et donc celui-ci est en fait très
‫similaire à ce que nous avons fait avant.
‫Nous utilisons donc add puis pour chacun des documents
‫nous en ajoutons un. Alors comme nous le faisions avant.
‫Mais en fait c'est une somme et non une addition, d'accord donc comme ici lorsque
‫nous avons compté les tournées pour chacune des difficultés, nous avons
‫simplement ajouté le numéro un pour chacun des documents.
‫Et donc ici, nous faisons la même chose.
‫Très bien, alors testons à nouveau ça.
‫Et nous nous rapprochons déjà de notre résultat final.
‫Et en effet, nous y voilà. Nous avons donc février avec une tournée.
‫Décembre avec une tournée, nous avons novembre ou en
‫fait septembre avec deux tournées.
‫Et puis nous avons deux tournées dans tout
‫ça ici, en fait, nous avons trois tournées en juillet.
‫Cela se rapproche donc assez de notre résultat.
‫C'est donc absolument fantastique.
‫Donc cette partie ici, qui je pense était la plus
‫difficile, fonctionne déjà.
‫D'accord.
‫Maintenant, nous voulons en fait plus d'informations, non seulement
‫sur le nombre de tournées, mais aussi
‫sur quelles tournées ? Alors faisons-le.
‫Donc, si vous voulez des informations sur les visites qui
‫devraient en fait être un tableau.
‫Droit? Sinon, comment pourrions-nous
‫spécifier deux ou trois tournées différentes dans un domaine, n'est-ce pas ?
‫Et donc fondamentalement, nous voulons créer un tableau et
‫nous le faisons en utilisant push, puis ce
‫que nous allons pousser dans ce tableau à mesure
‫que chaque document passe par ce pipeline est simplement
‫le nom du document, ou en
‫fait le champ de nom. Donc pas le nom du document mais
‫le champ de nom.
‫Donc dans ce cas le nom de la tournée. Bon alors testons.
‫Et...
‫bam, on y va !
‫Nous avons donc aussi maintenant le nom des tournées là-dedans.
‫Tellement fantastique. Voyons, ouais. Ici, nous avons tous les trois.
‫Ensuite, changeons le nom de ce
‫champ ici, d'accord ?
‫Maintenant, pas vraiment de changement, mais nous allons simplement
‫ajouter un autre champ qui aura la même
‫valeur ici afin que nous puissions plus tard supprimer cet ID.
‫D'accord, et donc pour cela nous allons utiliser l'étape suivante qui
‫s'appelle : ajouter un champ.
‫Alors ajoutez un champ et
‫celui-ci est assez simple. Il fait simplement ce qu'il dit.
‫Donc, ajouter un champ est utilisé pour ajouter des champs et en
‫fait, cela s'appelle ajouter des champs.
‫Et maintenant, le nom que nous voulons ajouter ou le champ
‫s'appelle mois et il a la valeur du champ
‫avec le nom ID.
‫D'accord. Donc, assez simple,
‫simplement le nom du champ, puis la valeur.
‫Et comme d'habitude, nous devons utiliser le signe dollar euh.
‫Très bien, juste pour le tester à nouveau.
‫En effet maintenant nous avons le mois.
‫Ensuite, débarrassons-nous en fait de cela et nous utilisons
‫donc project.
‫Donc j'essaie vraiment de mettre autant d'étapes ici que possible pour-- pour
‫vous montrer vraiment tout ce que je peux.
‫Alors, comment fonctionne le projet ? Eh bien, nous donnons simplement
‫à chacun des noms de champ un zéro ou un un.
‫Alors laisse-moi te montrer ça. Nous pouvons donc dire ID et le
‫mettre à zéro. Et cela fera alors
‫en sorte que l'ID ne s'affiche plus. Si j'en mets un
‫ici, eh bien, il apparaîtra, d'accord ?
‫Donc celui-ci je ne vais pas le tester. Permettez-moi d'ajouter le suivant
‫qui est le genre que je pense l'avoir utilisé auparavant, mais je veux quand
‫même le trier ici par nombre ou par tournées.
‫D'accord, donc pour le moment ce n'est pas 100% utile, nous manquons toujours parce que nous
‫devrions en fait le trier par euh, vraiment par le nombre
‫de débuts de tournée.
‫Donc, le nom du champ est le nombre de départs de la tournée et euh, rappelez-vous
‫que nous en avions un avant qui était pour l'ascension et moins un qui
‫était pour la descente et bien sûr c'est ce
‫que nous voulons.
‫Donc en commençant par le nombre le plus élevé.
‫Donc ça devrait être trois dans notre cas et oui, ça l'est.
‫Juillet est donc le mois le plus chargé avec trois départs :
‫le Forest Hiker, le Sea Explorer et le Sports Lover.
‫D'accord, donc c'est en quelque sorte fait.
‫Laissez-moi juste vous en montrer une, euh dernière étape ici qui
‫n'est pas vraiment utile ici mais je voulais
‫vous la montrer quand même.
‫Nous avons donc la limite, et celle-ci est exactement la même que
‫la limite dans la requête euh. Donc, en gros, ça
‫va nous permettre d'avoir seulement six documents ici.
‫Bon donc en gros six sorties.
‫Bon, testons cela, et maintenant, en effet, nous ne devrions en avoir
‫que six.
‫Un, deux, trois, quatre, cinq et six. D'accord.
‫Encore une fois, pas vraiment utile parce que ça va couper les six
‫mois les moins gros, ce que nous ne voulons pas.
‫Mettons-le simplement sur 12 ici,
‫juste pour que nous puissions le laisser ici comme référence pour vous.
‫D'accord, donc encore une fois, mais ça devrait fonctionner maintenant et
‫le vrai problème commercial est maintenant résolu.
‫Et je sais qu'il y a beaucoup de pièces en mouvement
‫que nous avons ici. Beaucoup d'étapes différentes.
‫Et donc je sais que c'est beaucoup pour vous en ce moment.
‫Mais ne vous inquiétez pas, vous n'êtes pas obligé de connaître
‫tout cela en même temps.
‫Avec de la pratique, vous continuerez à vous
‫améliorer et vous saurez quand utiliser quels outils
‫vous avez à votre disposition.
‫Gardez juste à l'esprit que vous pouvez toujours lire
‫la documentation qui est une sorte de matériel d'apprentissage complet et vraiment génial
‫en plus de ce cours, d'accord ?
‫Et cela s'applique à toutes les technologies
‫que nous apprenons ici.
‫Je vous encourage donc vraiment à toujours étudier la documentation.
‫Et je sais que cela peut être vraiment effrayant de le regarder et
‫sans ce cours, il serait beaucoup plus difficile d'apprendre de
‫la documentation mais avec ce
‫très bon point de départ que vous
‫obtenez dans ces vidéos, c'est alors beaucoup plus facile
‫pour vous de garder apprendre de
‫plus en plus euh, en utilisant cette documentation, d'accord ?
‫Je ne m'attendrais donc pas à ce que vous
‫résolviez ce défi par vous-même, c'est pourquoi nous l'avons fait
‫ensemble ici, n'est-ce pas ?
‫Mais j'espère que vous vous êtes autant amusé que
‫moi parce que, encore une fois, j'aime vraiment résoudre ce genre de problèmes, c'est--
‫c'est vraiment amusant je pense.
‫Mais de toute façon, assez parlé maintenant.
‫Dans le reste de la section, nous allons
‫maintenant parler de quelques euh, d'autres fonctionnalités que nous avons à
‫notre disposition dans Mongo, donc cela devrait également être assez amusant.