Transcription
1. Introduction du cours: Bienvenue au module
6 d'ExpressJCurse, les opérations
de crédit avec Mongoose Il s'agit d'un cours complémentaire de la série de cours Express JS. Je m'appelle Shawn Aguanhi, vous êtes l'instructeur de
ce voyage passionnant dans le monde de Mongo Après avoir créé de nombreuses applications basées sur les
données, je peux vous dire que la
maîtrise de Mongo Dew est une compétence essentielle pour les développeurs
modernes de Bend, et les mangos le rendent incroyablement
puissant Dans ce module, nous nous intéressons en
profondeur à
Mongo DB et aux mangos Voici ce que vous allez apprendre à connecter votre application NurJS à MongoDB en concevant schémas de
données
efficaces et flexibles Ensuite, créez,
lisez, mettez à jour et supprimez des données à
l'aide de modèles mangos, maîtrisant les requêtes avancées,
notamment les opérateurs, les conditions
logiques et les expressions
régulières Ensuite, vous
apprendrez à implémenter fonctionnalités telles que la pagination
et le comptage de documents Enfin, vous découvrirez les meilleures pratiques en matière
de gestion et de mise à niveau de
votre base de données. Cette classe est parfaite
pour les développeurs qui
souhaitent intégrer Mongo DB dans
leurs applications sans JS Si vous avez terminé
les modules précédents sur les ABI restful et Express Js, nous sommes prêts à commencer Aucune expérience préalable avec
MongoDB n'est requise. Nous partirons de
l'essentiel et passerons progressivement à des sujets
plus complexes. À la fin de ce module, vous aurez les
compétences nécessaires pour créer des applications
robustes basées sur les données. Que vous créiez un petit projet personnel ou une application de production à
grande échelle. MongoDB et Mongoose vous
apporteront la flexibilité et l'efficacité dont
vous avez besoin pour réussir Enfin, dans ce module, notre projet est construit autour d'une application autonome
appelée Mongo Demo Ce projet comprend trois exercices
ciblés au cours desquels vous allez concevoir des schémas et des modèles Mongoo pour structurer efficacement
vos données,
écrire
et exécuter des opérations
participatives
pour gérer les données de manière dynamique,
et mettre en œuvre des techniques avancées telles que le filtrage des requêtes, pagination et la
mise à jour de documents
selon les modèles standard du secteur Ces exercices vous
aideront à travailler avec
Mongo Deb et mangos en
toute confiance , vous
préparant à gérer des opérations de données
complexes dans des applications
réelles J'ai hâte de t'aider à maîtriser
Mongo Di Bi et la mangouste. Plongeons-nous dans le vif du sujet et commençons. Rendez-vous à la première conférence.
2. Débuter avec MongoDB: Bien, revenons à notre application
Fairwheels. Jusqu'à présent, nous avons
stocké la liste des entreprises dans un tableau en n'est pas ainsi que nous créons des applications du monde
réel, car
lorsque le serveur redémarre, nous perdons toutes
les données en mémoire C'est pourquoi nous devons
stocker nos données dans une base de données. Maintenant, comme je vous l'ai déjà dit, lorsque vous créez des applications
avec Node et Express, vous disposez d'un grand
nombre d'options en termes de base de données que
vous souhaitez utiliser. Dans ce cours, nous
allons utiliser Mongo DB car c'est un système de
gestion de base de données très populaire, et il est assez souvent utilisé dans les applications créées
avec Node et Express Donc, si nous n'avons jamais travaillé avec Mongo DB auparavant, ne vous inquiétez pas Vous allez l'
apprendre petit à
petit ou dans les prochaines sections. Maintenant, juste pour définir les
bonnes attentes, Mongo be a vraiment besoin de
sa propre voie Vous ne serez
donc pas un expert de
Mongo Be à la
fin de ce cours, mais vous en apprendrez
suffisamment pour faire le travail Maintenant, si nous n'avons jamais travaillé
avec Mongo DB auparavant, Mongo DB est essentiellement
ce que nous appelons un document ou aucune base de données SQL Elle est différente des bases de données
relationnelles traditionnelles telles que SQL Server ou
MySQL, etc. Ainsi, dans Mongo B, nous n'
avons pas le concept de tables, de
schémas, de vues, d'enregistrements,
de colonnes. C'est différent Contrairement aux bases de données relationnelles, pour lesquelles vous avez conçu votre
base de données à l'avance, dans Mongo DB, le
schéma ou le design
n'existent pas Stockez simplement vos
objets JCN dans Mongo DB. Nous avons donc ici un
éventail d'entreprises. Nous pouvons simplement stocker tous les
objets de ce tableau et une collection dans Mongo
DB, aussi simple que cela Cela signifie également que lorsque nous
interrogeons nos données, nous extrayons des objets
JCN de Mongo DB, et nous pouvons simplement renvoyer ces objets
au client Il n'y a donc aucune transformation. C'est une introduction suffisante
à Mongo DB. Ensuite, je vais
vous montrer comment l'
installer sur votre machine.
3. Installer MongoDB pour Node.js: Dans cette conférence,
je vais
vous montrer comment installer
Mongo DV sous Windows Ouvrez donc votre navigateur et
rendez-vous sur mongodv.com. Sur cette page, en haut à gauche, cliquez sur le produit, puis ici, sélectionnez l'option Ajout à la
communauté. Il s'agit du serveur Mongo DV
que nous exécutons sur cette machine. Faites défiler la page vers le bas, vérifiez la version et assurez-vous que
Windows est sélectionné. Téléchargez maintenant ce MSI.
Alors, sauvegardons ça. C'est bon. Et maintenant, exécutons-le. Cliquez quand même sur installer. Cela nous donne donc un installateur
très simple. Allons-y. Acceptez ensuite
le contrat de licence. Ensuite, effectuez une installation
complète. Encore une fois, maintenant, sur cette page,
il y a une case à cocher ici Installez MongoivKmpas. Il s'agit des données de
l'application client que nous utilisons pour nous connecter à
notre serveur MongoDB Nous examinons nos bases de données. Ensuite, installez Très bien, Mongo DB est installé. Et notre boussole Mongo DB
est également lancée, nous en reparlerons plus tard Ouvrons maintenant l'explorateur de fichiers et passons à Program Files, puis à Mongo DB. Serveur suivant. Maintenant, la version
que j'utilise est 7.0. y a de fortes chances qu'à l'avenir, lorsque vous regarderez ce film, la
version soit différente. Sélectionnez donc ce dossier , puis Ben et enfin
Mongo D. Il y a Mongo Damon, un service
qui s'
exécute en arrière-plan Et il s'agit essentiellement de
notre serveur de base de données Mongo. Maintenant, je veux que vous
choisissiez ce chemin ici. Maintenant, dans la barre de recherche,
recherchez les paramètres système avancés. Sur cette page, nous devons accéder
aux
variables d'environnement ici. Ensuite, dans cette liste
de variables système, sélectionnez Chemin, cliquez sur
Modifier, puis sur Nouveau. Et nous suivons ici le chemin
que nous avons copié plus tôt. Il s'agit du chemin
d'accès au répertoire qui contient notre serveur
Mongo DV OK ? Maintenant, sur cette page, sélectionnez
également OK. Jan. Maintenant, ouvrez
PowerShell et lancez Mongo D. Si vous ne voyez pas ce résultat et que vous obtenez un message d'erreur tel que Mongo
D n'est pas reconnu, vous devez redémarrer Fermez donc toutes les
fenêtres PowerShell
actuellement ouvertes sur votre
machine, puis ouvrez-la Ainsi, lorsque vous exécutez Mongo D, vous devriez voir une
sortie comme celle-ci Par défaut, vous
allez recevoir un message d'erreur. Donc, regardez,
nous avons cette exception : répertoire de données de
chemin inexistant, C,
données de barre oblique inverse de colonne, barre oblique inverse,
TV introuvable Donc, par défaut, Mongo DV stocke
vos données dans ce dossier. Créons donc ce dossier. MKDIR,
données de barre oblique inversée en C, deux-points, barre oblique inverse TV. OK. Maintenant, lançons
Mongo E une fois de plus. Cette fois, nous n'avons
pas cette exception. Et le dernier message
attend les connexions
sur le port 27017 Cela vérifie donc que le serveur Mongo
DV est en cours d'exécution. Nous pouvons maintenant passer à
Mongo DV Compass. Voici donc la page
pour commencer. Il s'agit de se connecter à l'hôte. Nous devons spécifier le serveur
Mongo DV auquel nous
voulons nous connecter Laissez donc les
valeurs par défaut telles quelles. Le nom d'hôte est donc local
host et le port est 27017. Maintenant, connectons-nous. Magnifique. Nous sommes connectés avec succès à notre serveur
Mongo DV Par défaut, nous
avons donc trois bases de données, Local, Armin et Config C'est pour que MongoTV
fasse son travail. Nous n'allons pas travailler
avec ces bases de données.
4. Connexion de Node.js à MongoDB: D'accord. Créons maintenant un
nouveau projet pour cette section. Je vais donc créer un nouveau
dossier appelé Mongo Demo. Allons dans ce dossier et
exécutons NVM dedans avec un drapeau américain. Magnifique. Nous devons maintenant installer un paquet de nœuds
appelé Mongoose Mongoose nous fournit un EPI simple pour travailler avec une base de données
Mongo DB OK, vous pouvez donc voir qu'au
moment de l'enregistrement de cette vidéo, j'utilisais la
version 7.5 0.0 de Mongos Donc, si vous voulez vous
assurer d'avoir la même expérience que je vais
vous montrer dans cette vidéo, je vous encourage vivement à
installer exactement la même version. Bien, ajoutons un nouveau
fichier ici, index point JS. La première chose à faire
est de nous connecter à Mongo Deb. Nous allons donc charger ce module
mangos. Et rangez-le dans les pongos
constants. Maintenant, cet objet possède une
méthode appelée connect. Nous l'utilisons pour nous
connecter à Mongo DB. Maintenant, nous passons ici une
chaîne de connexion qui est Mongo DB, Allan 127.0 0.0 0.1. Colonne 27017. Cela fait référence au Mongo DV que nous avons installé
sur cette machine Lorsque vous souhaitez déployer votre application dans un environnement
de production, vous devez
disposer d'une chaîne de
connexion différente pour la production. Plus tôt dans cette
section consacrée à Express, je vous ai expliqué comment gérer différents paramètres de configuration pour différents environnements. Dans cette vidéo, nous n'
abordons pas ce
niveau de complexité. J'ai donc codé en dur une chaîne de
connexion ici. Mais dans une application réelle, votre chaîne de connexion doit provenir d'un fichier de configuration. Voici donc notre serveur de base de données Mongo. Ensuite, nous ajoutons
le nom de notre base de données. Dans ce cas, je vais
utiliser une simple base de données de
terrain de jeu. Maintenant, nous n'avons pas créé cette base de données,
et cela n'a pas d'importance. La première fois que nous écrivons
quelque chose dans cette base de données, Mongo E B
créera automatiquement cette base de données pour nous OK, voici comment nous nous connectons
à une base de données Mongo I B. Maintenant, cette méthode de connexion
renvoie une promesse. Nous pourrons donc les appeler lorsque
cette promesse sera remplie. Cela signifie que nous nous sommes connectés
à une base de données Mongo Eb. Ici, nous pouvons créer un
simple journal de points sur console connecté à Mongo I B. Et d'ailleurs, j'
utilise ici le journal de points Tensole pour Comme je vous l'ai dit dans la
section sur Express, dans une vraie application, il est préférable d'utiliser le
module de débogage, car cela vous permet de mieux
contrôler la quantité de
messages de débogage que vous souhaitez voir Mais dans cette section, nous ne
voulons pas nous laisser distraire
par trop de complexité Nous voulons simplement nous
concentrer sur Mongo DB. C'est donc pour le scénario où nous nous connectons avec succès
à une base de données Mongo IB Mais que faire si quelque chose ne
va pas ? Nous voulons corriger cette erreur. Ici, nous obtenons un objet d'erreur ,
puis nous l'
affichons sur la console. Donc, erreur de point de console. Connexion à MangiibFail. Ensuite, nous ajoutons
l'objet d'erreur. Magnifique. Maintenant,
lançons cette application. Donc, de retour dans le terminal, point d'index de la lune
nord JS. Nous pouvons donc voir que nous sommes
connectés avec succès à Mongerib.
5. Concevoir des schémas de données avec Mangouste: Nous nous sommes donc connectés à
notre base de données Mongo DB. La prochaine chose que nous devons
faire est de créer un schéma. Nous utilisons un schéma pour définir la
forme des documents au sein d'une collection dans Mongo DB.
Qu'est-ce que je veux dire par là ? Eh bien, revenons à
notre boussole Mongo DB. J'ai créé cette
base de données ici, Ground. Et dans cette base de données, nous avons cette collection appelée cours. Une collection dans Mongo DB est comme une table dans une base de
données relationnelle Maintenant, dans cette collection
Curses, nous avons trois documents Un document dans Mongo IB est un peu similaire à une ligne dans
une base de données relationnelle Dans les bases de données relationnelles,
nous avons donc des tables et des lignes Dans Mongo DB, nous avons des
collections et des documents. Jetons maintenant un coup d'
œil à cette collection. Voici donc un exemple
du document. Chaque document est un conteneur
de paires clé-valeur. Nous avons donc ici un identifiant de soulignement, qui est un identifiant unique. Pour chaque document, nous avons des balises, qui sont un tableau
de paires clé-valeur. Nous avons le nom, l'auteur, publication, la date et la version. Maintenant, ne vous inquiétez pas de la
façon dont je l'ai créé. Vous allez l'apprendre au
cours des prochaines conférences. Maintenant, dans Mongoose, nous avons
ce concept appelé schéma. Ceci est juste spécifique
à la mangouste. Il ne fait pas partie de Mongo DB. Nous utilisons un schéma dans
Mongoose pour définir la forme des documents dans
une collection Mongo DB Nous l'utilisons donc pour définir
les propriétés que nous
avons dans ce document. Maintenant, je vais vous montrer
comment créer un schéma. Donc, de retour dans le code VS, définissons une constante, appelons-la schéma de cours. Ce schéma définit
la forme des
documents de cours dans notre base de données
Mongo DB Nous avons donc défini cela sur une nouvelle classe de schéma
Mongoose. Ici, lors de la création d'une instance de cette classe, nous
transmettons un objet. Et dans cet objet, nous indiquons les
paires clé-valeur que nous devrions avoir
dans les documents de cours. Vous voulez donc que chaque cours
ait une propriété de nom, et le type de cette
propriété doit être une chaîne. De même, chaque cours doit avoir un auteur de type chaîne. Je veux que nos cours contiennent X. Et ici, je veux avoir
un ensemble de chaînes. Techniquement, lorsque
cela est stocké, chaque objet de ce tableau
sera une paire clé-valeur. La clé sera l'index et la valeur sera cette chaîne. Maintenant, je veux aussi que
chaque cours ait une propriété de date de type date. Maintenant, nous pouvons également lui donner
une valeur par défaut, afin de pouvoir la changer
de date en objet. Cet objet est une
propriété de type que nous avons définie à date, et il possède également une
propriété appelée default, et nous l'avons définie sur date point maintenant. Ainsi, il n'est
pas nécessaire de spécifier une date lors de la création
d'un objet de cours. Date qui sera désormais utilisée
comme valeur par défaut
pour cette propriété. Enfin, je veux que
chaque cours
possède une propriété
appelée I published, qui serait une valeur booléenne Voici donc la liste des types que nous pouvons utiliser lors de la
création d'un schéma. Nous avons une chaîne,
un nombre, une date, un tampon, que nous utilisons pour stocker des données
binaires, un booléen, un identifiant d'objet, qui est utilisé pour attribuer des
identifiants uniques et un tableau Ensuite, je vais
vous montrer comment créer et enregistrer un document en
fonction du schéma du cours.
6. Créer et utiliser des modèles de mangoustes: Voici donc notre
schéma de cours qui définit la forme des documents de cours
dans une base de données Mongo De Maintenant, nous devons le
compiler dans un modèle. Qu'est-ce qu'un modèle ? Eh bien,
plus tôt dans le cours, j'ai parlé du concept
de classes et d'objets. Donc, à titre d'exemple, je vous ai dit que nous pouvons avoir une
classe appelée humaine, nous pouvons avoir un objet comme Shen. Un objet est donc une
instance d'une classe. Une classe n'est qu'un plan, mais un objet est un
instant de ce plan Maintenant, dans cette application, nous voulons avoir une
classe appelée cours. Ensuite, nous devrions
être en mesure de créer des
instances de cette classe,
comme un cours de nœuds. Ensuite, nous pouvons enregistrer ce cours de
nœud dans notre base de données. Donc, pour créer une
classe comme un cours, nous devons compiler ce
schéma dans un modèle. Voici donc comment nous procédons. Cet objet Mongoose que
nous avons possède une méthode appelée model qui
prend deux arguments Le premier argument
est le nom singulier de la collection à laquelle
ce modèle est destiné. Donc, dans notre base de données Mongo EB, vous voulez avoir une collection
appelée cours, n'est-ce pas ? Voici donc un cours sur les
noms singuliers. Le deuxième argument
est un schéma qui définit la forme des
documents de cette collection. C'est donc le schéma du cours. Maintenant, avec cela, nous obtenons un
cours dans notre application. Nous pouvons donc définir cela sur une
constante appelée course. Et notez qu'ici j'utilise la convention de dénomination
Paceal. La première couche est donc
bien sûr en majuscules, ce qui signifie qu'il s'agit d'une
classe. Ce n'est pas un objet. Nous pouvons maintenant créer un objet
basé sur cette classe. Créons donc un objet de cours. Et ici, j'utilise notation majuscule
camel parce que la première lettre
du premier mot,
dans ce cas, bien sûr,
est en minuscules Nous utilisons donc Camel case pour nommer nos objets et pacelcase
pour nommer Donc, dans ce cours, nous l'avons défini
sur un nouveau cours, et dans cette fonction
constructeur, nous passons un objet, initialisons notre objet de cours Définissons donc les
propriétés de ce cours. Je vais donner le nom
au cours Express JS. Configurez l'auteur sur Shiv in. Définissez le texte sous la forme d'un
tableau de deux chaînes. Nous pouvons donc avoir Express
et, disons, y répondre. Maintenant, c'est une chose
intéressante à propos des bases de données
Mango or No SQL en général. Vous pouvez voir qu'un document dans Mongo DB peut être un objet
complexe Donc, ici, cette propriété de balise
est un tableau de chaînes. Nous n'avons
rien de tel
dans les bases de données relationnelles En d'autres termes, une ligne d' une base de données relationnelle
possède des attributs simples Si vous souhaitez modéliser cette structure dans une base de données
relationnelle, vous avez besoin de trois tables, de
cours, de balises
et d'une table intermédiaire
appelée balises de cours, car nous avons
ici un trop grand nombre
de relations entre les cours et les balises Mongo IB ou aucune
base de données SQL en général, nous n'avons pas cette structure Il n'est pas nécessaire de
définir ces tables. Nous n'avons pas besoin de les scénariser. Nous créons simplement nos objets et les stockons dans une base de données. C'est pourquoi nous les appelons schema less. Ils n'ont pas de schéma. Voici donc notre propriété fiscale. Maintenant, l'autre propriété
que nous avons est la date. Mais plus tôt, j'ai défini cela
comme ayant une valeur par défaut. Je ne vais donc pas
définir cela ici, et la dernière propriété
est publiée. Je vais régler ça aussi, c'est vrai. Récapitulons donc rapidement. Une fois que nous avons un schéma, nous devons le compiler
dans un modèle, ce qui nous donne une classe. Ensuite, nous pouvons créer un
objet basé sur cette classe. Et cet objet correspond à un document d'une base de données
Mongo DB Ensuite, je vais vous montrer comment enregistrer ce document
dans notre base de données.
7. Données persistantes avec Mangose: C'est bon. Voici donc
notre objet de cours qui correspond à un
document de cours dans Mongo DV Maintenant, enregistrons ceci
dans notre base de données. Cet objet de cours possède donc
une méthode appelée save. Nous avons maintenant affaire à une opération asynchrone
car l'enregistrement de ce cours dans
la base de données va prendre un
certain temps car nous allons accéder
au système de fichiers C'est pourquoi nous avons affaire à
une opération asynchrone. Le résultat de cette opération
sera prêt dans le futur. Cette méthode
renvoie donc une promesse. Nous pouvons le piloter
et obtenir le résultat. Ce résultat correspond à l'objet
de cours
réellement enregistré dans la base de données. Ainsi, lorsque nous enregistrons ce
cours dans Mongo DB, Mongo DB
attribuera un identifiant unique à objet
de cours avec
ce document de cours Maintenant, avec cela, nous pouvons voir l'IRE
attribué par Mongo DB Enregistrons-le donc dans
le résultat de la console. Comme je vous l'ai déjà dit,
chaque fois que j'utilise un poids, votre code doit être
dans une fonction asynchrone Je vais donc
définir une fonction ici, st, create course. Nous lui avons attribué une fonction
d'erreur de synchronisation comme
celle-ci et avons mis tout ce code
dans cette fonction. Nous créons donc un objet de cours, enregistrons, puis nous affichons
le résultat sur la console. Et enfin, nous
appelons ici create Curse. Enregistrer. Maintenant, de retour dans
le terminal, dans cette section, je vais exécuter cette
application en utilisant Node au lieu de norm
car sans personne, chaque fois que je
modifie simplement le code, cela entraînera la création d'
un nouveau document dans notre base de données
Mongo DB Le point d'index du nœud est donc. Magnifique. Notre cours a été
enregistré dans la base de données, et voici le document qui est réellement stocké
dans notre base de données Mongo. Écoutez, Mongo DB a attribué
cet ID de soulignement de propriété, et il est défini sur cet identifiant
unique Revenons maintenant à la boussole
Mongo DB. Rafraîchissons-le donc ici. Voici notre base de données de terrains de jeu. Nous avons cette collection de cours, et dans cette collection, nous
avons un seul document, n'est-ce pas ? C'est donc une beauté des bases de données Mongo
DB ou Nose EQUL. Contrairement aux bases de données relationnelles, nous n'avons pas eu à
créer de table. Nous n'avons pas eu à
écrire ce tableau par script. Il vous suffit de créer un document et de le stocker dans
nos données Mongo DB De retour au tableau,
modifions ces valeurs et
créons un autre document. Parce que dans la prochaine conférence, je vais vous montrer
comment interroger des documents. Passons donc
au cours ReactJS, et nous ajoutons deux balises, react point js et front end Enregistrer. De retour dans le terminal, arrêtons ce processus et
exécutons à nouveau cette application. Voici notre deuxième document. Et si vous regardez dans MongoivKmpas, actualisons le résultat Écoutez, nous avons deux documents
dans notre collection de cours. Magnifique. Ensuite, je vais vous montrer
comment interroger des documents.
8. Maîtriser les requêtes manguste: Très bien maintenant,
laissez-moi vous montrer comment
générer des documents à partir d'une base de données
Mong Wo DV Donc ici, je vais créer une autre fonction Pas G courses. Nous l'avons dit à la fonction
d'erreur asynchrone. Ensuite, je vais
remplacer l'appel à créer un cours par des cours G. Implémentons maintenant
cette fonction. Cette classe de cours
que nous avons définie précédemment
propose donc un ensemble de méthodes
pour interroger des documents Nous avons trouvé
une liste de documents. Nous avons trouvé par identifiant, ce qui est assez
explicite. Et nous en avons trouvé un qui
renvoie un seul document. Nous avons maintenant quelques autres méthodes
intéressantes ici, mais ne vous inquiétez pas pour elles. Nous les utilisons pour trouver un document ,
puis pour le supprimer ou le mettre à jour. Nous les
examinerons plus loin dans cette section. Regardons donc la bonne méthode. Comme vous pouvez le constater, cette méthode renvoie une option de requête de document. Maintenant, cet objet de requête de document
est un peu comme une promesse. Il a donc une méthode alors, afin que nous puissions l'éviter
et obtenir le résultat. Et avec cela, nous obtenons tous
les cours dans notre base de données. Affichons-le
donc sur la console. Revenez maintenant dans l'index
du nœud terminal vers Js. Alors regardez, nous obtenons un
tableau avec deux objets. Voici notre premier cours, c'est le cours express, et voici le deuxième cours. C'est la réaction au cours de G. Magnifique. Maintenant, nous pouvons
également passer un filtre ici. Ainsi, comme premier argument de la méthode fine,
nous passons un objet, et dans cet objet, nous ajoutons une ou plusieurs
paires clé-valeur pour le filtrage. Supposons donc que nous voulions suivre
uniquement les cours de Sheven. Nous avons donc défini l'auteur sur Sheven, nous
pouvons transmettre une autre propriété. Un autre filtre est
publié via. Ainsi, avec ce filtre, nous n'obtenons que les cours publiés par couture,
et c'est ainsi que nous
arrivons aux documents Mais ici, nous pouvons également
trier nos documents. Nous pouvons fixer une limite au nombre de documents renvoyés. Nous pouvons également sélectionner des
propriétés spécifiques dans le document. Supposons que notre cours
contienne 50 propriétés, peut-être que nous ne voulons pas rendre toutes ces propriétés
au client, peut-être que vous voulez
renvoyer uniquement leur nom. Je vais donc vous montrer comment
créer une requête plus complexe. Plus tôt, vous avez vu que cette méthode fine renvoie
un objet de requête de document. Écoutez, une demande de document, n'est-ce pas ? Nous pouvons donc ici personnaliser cette requête. Nous pouvons
appliquer une limite. Disons que nous pouvons
trier les documents. Ici, nous passons un objet. Et dans cet objet, nous ajoutons une ou plusieurs
paires clé-valeur pour le tri. Supposons donc que nous voulions trier ces documents par leur nom. Nous avons défini le nom sur un. L'un indique l'ordre croissant. Nous voulons trier ces documents
par ordre décroissant, vous utilisez moins un Comme je vous l'ai dit, vous pouvez avoir plusieurs paires
clé-valeur ici. Nous avons également une autre
méthode
de sélection , qui nous permet de sélectionner les propriétés que nous
voulons renvoyer. Supposons, par exemple, que nous voulions
uniquement obtenir le nom et la propriété fiscale de
chaque document de cours. Nous avons donc défini le nom à un
et le texte à un également. Exécutons maintenant cette application, retour dans le nœud terminal, indexez Js. Alors regardez, les objets de
cours que nous
obtenons n'ont maintenant que trois propriétés. Marquez le nom, nous avons sélectionné
ces deux propriétés, mais nous obtenons également la propriété
ID
sous-jacente attribuée par défaut par
Mongo DB De plus, ces documents sont triés par leur nom
dans l'ordre décroissant Le
cours React GS passe donc en premier, même si nous l'avons créé
plus tard. C'est ainsi que nous créons des requêtes. Dans la prochaine conférence,
je vais
vous montrer comment effectuer un filtrage plus
complexe.
9. Opérateurs de comparaison de requêtes Mongoose: Ainsi, lors de la dernière conférence, vous avez appris à utiliser la méthode fine pour
filtrer les documents. Dans les prochaines conférences, je vais vous montrer comment
créer des requêtes plus complexes. Maintenant, si vous n'avez jamais
travaillé avec Mongadb auparavant, vous trouverez la syntaxe que
nous utilisons pour créer des requêtes, un peu
inhabituelle ou étrange, et je le comprends parfaitement parce
que j'y suis déjà
allé Mais dans cette conférence,
je vais vous montrer une technique qui rappelle
cette syntaxe, et vous vous rendrez compte que
c'est en fait très simple. Le sujet de cette conférence
porte donc sur les opérateurs de comparaison. Ainsi, dans Mongo DV, nous avons un tas d'opérateurs
pour comparer des Comme Mongoose est construit sur le
driver Mongo DV, ces opérateurs standard
que Mongo Dee comprend, sont également Voici donc les opérateurs de
comparaison que nous avons dans Mongo DB. Nous avons EQ, qui
est l'abréviation de égal, nous avons NE, qui est l'
abréviation de pas égal Nous avons GT, qui est l'
abréviation de supérieur à GTE, qui est l'abréviation de
supérieur ou égal à. De même, nous avons LT, qui est l'abréviation de moins de. Nous avons le LTE, qui est l'
abréviation de moins ou égal à. Nous avons également N et NIN
, abréviation de « not N ». Maintenant, pour les besoins de cette conférence, imaginons que nos cours
aient une propriété de prix. Je vais commenter
cette belle méthode. Supposons que nous voulions suivre
tous les cours à 10$. Comment s'y prend-on ? Nous disons donc « très bien », nous passons un
objet à filtrer, fixons le prix à dix, sorte que seuls les
cours de 10$ soient renvoyés. Et si nous voulions des cours
de plus de 10$ ? Comment pouvons-nous exprimer cela en utilisant des objets
JCN en JavaScript ? Eh bien, vous savez qu'
en JavaScript, un objet est essentiellement une
collection de paires clé-valeur. Donc, ici, notre clé est le prix
et notre valeur est dix. Avec une valeur simple, nous ne pouvons pas exprimer un concept supérieur ou
supérieur à dix. Donc, pour exprimer le
concept de plus de dix, nous devons transmettre un objet. Ici, cet objet est à nouveau un conteneur
pour les paires clé-valeur. Maintenant, je peux utiliser l'un de
ces opérateurs comme clé. Permettez-moi d'utiliser un opérateur
supérieur à ici. Do sine indiquera
qu'il s'agit d'un opérateur. GT supérieur à, et nous avons fixé cette valeur à
dix. Alors voyez ce que j'ai fait. J'ai remplacé une valeur simple comme dix par un objet pour
exprimer un concept, le concept supérieur à dix. Nous pouvons maintenant changer cet opérateur pour qu'il soit supérieur ou égal à. Si vous voulez également des cours dont le résultat est de
10$. Passons au niveau suivant. Et si nous voulions suivre des
cours de 10 à 20$ ? Encore une fois, nous pouvons utiliser
un autre opérateur, donc inférieur ou égal à 20$. Voici donc comment nous pouvons utiliser ces opérateurs de comparaison
pour interroger des documents. Regardons maintenant
un autre exemple. Imaginons que nous voulions
obtenir des cours 10$, 15$ ou 20$ Je vais donc le
recommander. Repartons de zéro. Nous appelons donc find, transmettons un objet à filtrer,
fixons à nouveau le prix. Si j'utilise dix, je ne peux
comparer l'égalité qu'à dix. n'est pas ce que nous voulons. Nous
voulons des cours à 10$, 15$ ou 20$ Nous remplaçons donc cette valeur un objet pour
exprimer notre requête. Ici, nous utilisons un
opérateur libellé en dollars. Maintenant, qu'est-ce que nous
utiliserions comme valeur ? Ici, nous voulons exprimer
une requête où
les cours coûtent 10$, 15$ ou 20$ Nous avons donc affaire à
trois valeurs ici. Quelle construction Javascript
utilisons-nous pour exprimer
plusieurs valeurs ? Nous utilisons un tableau, non ? Alors dix, 15, 20. Voyez ce que j'ai fait jusqu'ici. Je n'ai rien mémorisé. J'essaie juste de penser logiquement, comment pouvons-nous utiliser la façon dont
Script construit pour exprimer un concept
afin d'exprimer une requête Voici donc les opérateurs
de comparaison. Et lors de la prochaine
conférence, nous allons examiner les opérateurs
logiques.
10. Opérations logiques dans les requêtes Mangouste: Dans cette conférence, je
vais vous montrer comment utiliser les opérateurs de
requête logiques. Voici donc notre requête initiale. Nous proposons tous les cours
qui répondent à ces critères. Ils sont rédigés par Shevin
et publiés. Et si nous voulions obtenir les
poses publiées par Shevin ou
les cours publiés ? Nous pouvons donc avoir des cours
publiés, mais ils ne sont pas
rédigés par Chevan C'est là que nous avons
besoin de l'opérateur. Voici donc les
opérateurs logiques dont nous disposons. Nous avons R et M. Découvrez comment nous
pouvons utiliser ces opérateurs. Je vais donc le
recommander. Au lieu de cela, nous allons appeler la méthode fine
sans aucun filtre. Ensuite, nous
appelons la méthode R. Maintenant, voici une question pour toi. Quelle construction de bande Java utilisons-nous pour stocker
plusieurs valeurs ? Nous utilisons un tableau, non ? Ici, nous devons
passer un tableau, et dans ce tableau,
nous ajoutons deux objets. Chaque objet est un filtre, tout comme l'objet filtre que nous passons à la méthode fine. Dans ce premier
objet de filtre, nous ajoutons donc l'auteur. Nous l'avons défini sur Shi en une seconde, nous l'avons ajouté publié, et nous l'avons défini sur true. Maintenant, avec cela, nous allons
obtenir des cours
rédigés par Shevin ou
des cours publiés L'opérateur logique N
est exactement le même. Mais au lieu d'utiliser la méthode, nous utilisons la méthode. Et avec cela, nous passons un
tableau d'objets filtrants. Ceci est maintenant
techniquement similaire à la transmission d'un objet filtre
à la méthode find. Mais parfois, dans
des requêtes plus complexes, vous pouvez trouver une place
pour utiliser la méthode N. Ensuite, nous allons
examiner les expressions régulières.
11. Maîtriser les expressions régulières dans MongoDB: Pour en revenir à notre requête initiale, dans cet exemple, nous obtenons des cours dont l'auteur
est exactement la chaîne. Ici, si nous avons un
cours avec des auteurs
tels que Shevin ou Shevin a Guanhi, ces cours ne seront Donc, si
vous souhaitez mieux
contrôler le filtrage des chaînes, vous devez utiliser une expression
régulière. Laissez-moi vous montrer comment cela fonctionne. Je vais donc faire
un commentaire à ce sujet. Supposons que nous voulions obtenir des cours
dont l'auteur commence par Chewn. Voici comment nous
écrivons cette requête Donc, trouvez un objet,
définissez l'auteur. Maintenant, au lieu de passer
une chaîne ici, nous transmettons votre expression régulière. Nous ajoutons donc une barre oblique, nous
ajoutons un motif que nous allons modifier dans une
seconde, et une autre barre oblique Il s'agit donc d'une syntaxe pour représenter une expression
régulière. Maintenant, dans les expressions régulières, nous pouvons utiliser ce caractère en carats pour représenter une chaîne qui
commence par quelque chose. Ici, je peux ajouter Shen. Cette expression régulière
représente donc une chaîne
commençant par Shen. Donc tant que l'autre
commence par Shen, peu importe
ce que nous avons. Ces cours seront retirés. Et si nous voulions rechercher des cours dont l'auteur se
termine par une chaîne donnée ? Disons que cela se termine par Ragan G. Voici comment nous
écrivons cette requête Bien, en tant qu'objet, nous avons défini à l'auteur une expression régulière pour
un motif
de barres obliques Et le modèle que nous utilisons
ici est Rugen hi Dasg. Dans les expressions
régulières, un sinus de poupée indique la fin d'une chaîne. Nous
cherchons donc ici des cours dont l'auteur finit par abonci Désormais, cette requête distingue les
majuscules et minuscules. Si vous voulez le
rendre insensible aux majuscules et minuscules, vous devez ajouter un identifiant à la fin Enfin,
examinons le dernier exemple. Et si vous
vouliez rechercher des poses dont l'auteur contient
le mot navire ? Le changement peut donc être
au début. Cela peut être au milieu ou à la fin. Je vais donc vous montrer
comment écrire cette requête. Nous appelons donc fine un objet, un
auteur, une expression régulière. Voici notre schéma. Point,
étoile, point décalé, étoile. Donc, cette étoile dans une expression
régulière signifie que nous pouvons avoir zéro
ou plusieurs caractères. Peu nous importe quels sont
ces personnages. Ainsi, avec ce modèle avec
cette expression régulière, nous pouvons avoir zéro
ou plusieurs caractères avant ou après le décalage. Et encore une fois, si vous voulez rendre cette affaire insensible, nous avons mis un I à la fin Bien entendu, vous pouvez utiliser des expressions régulières plus
complexes. L'explication des expressions
régulières JavaScript dépasse le cadre
de ce cours. Donc, si vous souhaitez en savoir plus
sur les expressions régulières, il suffit de lire un didacticiel sur les expressions
régulières JavaScript.
12. Mettre en œuvre la pagination avec une manguste: Dans cette requête,
vous filtrez nos cours et vous
ne choisissez que leur nom et leurs propriétés
fiscales. Donc, si vous exécutez
cette application, nous obtenons un
ensemble de deux cours. Et chaque cours possède
ces trois propriétés. Parfois, nous
voulons simplement obtenir le nombre de documents plutôt
que les documents eux-mêmes. Donc, si tel est le cas, nous n'avons pas besoin d'
utiliser la méthode de sélection. Nous appelons plutôt count, ce qui renvoie le nombre de documents correspondant à
ce critère. Donc, de retour dans le terminal,
relançons cette application. Écoutez, nous avons deux documents
qui correspondent à notre filtre.
13. Modèles de mise à jour de mangues : approche de première demande: Vous avez donc
découvert plus tôt cette méthode de limitation. Une méthode qui va de
pair avec la méthode des limites
est une méthode d'évitement. Et nous l'utilisons pour
implémenter la pagination. Laissez-moi vous montrer comment cela fonctionne. Laissez-moi donc définir une constante
appelée numéro de page. Cela peut être un, deux,
trois, peu importe. Mettons-le donc à deux. Nous avons une autre constante
appelée taille de page. Ouais. J'ai donc
codé ces chiffres en dur. C'est uniquement pour des raisons de simplicité. Mais dans une application du monde réel, nous transmettons ces valeurs sous forme paramètres de chaîne de
requête
à des API RESTful. Vous pouvez donc avoir une API pour
obtenir la liste des cours. Son point de terminaison peut obtenir des paramètres de
chaîne de requête comme celui-ci. Donc, le numéro de page, nous l'avons mis à deux et le format de page,
nous l'avons défini à dix. C'est ainsi que cela fonctionne
dans le monde réel. Pour l'instant, nous n'
avons pas à nous inquiéter à
ce sujet . Supprimons donc ceci. Pour implémenter la
pagination, nous devons ignorer tous les
documents de la page précédente Voici donc la formule. Numéro de page moins
une fois la taille de la page. Donc ici, je suppose que le
numéro de page commence par un. Donc, plus précisément, il s'agit d'un numéro de
page, pas d'un index de page. OK ? Ensuite, nous changeons
la limite en taille de page. Cela nous permet d'obtenir les
documents sur une page donnée.
14. Les modèles de mangoustes : première approche à mettre à jour: Vous avez donc beaucoup appris
sur les documents queering. Dans cette conférence, je
vais vous montrer comment mettre à jour des documents
dans la base de données Mongo DB Créons donc une nouvelle fonction. Donc, dernière mise à jour du cours. Nous l'avons définie sur une fonction d'erreur et elle devrait prendre un identifiant. Donc, en tant qu'ID, le fil R passe
à un bloc de coordonnées. Il s'agit de l'identifiant du cours. Nous allons le
mettre à jour, puis ici, nous allons le remplacer par
un cours de mise à jour. Maintenant, il existe essentiellement deux manières de mettre à jour un
document dans MongoIV. L'une des approches est ce que j'
appelle « Where you first ». Vous trouvez donc un document
utilisant Fine by ID, puis nous modifions ses propriétés. Enfin,
appelez la méthode de sauvegarde. C'est probablement l'approche que vous avez utilisée
dans d'autres frameworks. Maintenant, l'autre approche est
ce que j'appelle d'abord la mise à jour. Ainsi, au lieu de récupérer
d'abord un document, nous allons dans la base de données
et le mettons à jour directement Maintenant, nous pouvons également souvent obtenir le document
mis à jour. Dans cette conférence, je
vais donc vous montrer
la première approche, et nous examinerons l'autre
approche dans la vidéo suivante. Supprimons donc tous
ces commentaires. Ici, nous voulons
suivre le cours avec un identifiant donné. Alors, bien sûr, point Fine By ID, nous transmettons cet identifiant ici. Maintenant, cela renvoie une promesse, alors on la supprime, on obtient le
résultat et on l'enregistre ici. Maintenant, il y a de fortes chances qu'
aucun cours n'ait un identifiant donné, nous devons
donc vérifier cela. Si nous n'avons pas de cours, nous y retournerons immédiatement. Dans le cas contraire, nous allons
améliorer les propriétés
de ce cours. Nous pouvons donc définir le
point du cours comme étant publié sur true et également sur l'auteur pour un autre auteur. Il existe une autre approche. Au lieu de définir
plusieurs propriétés, nous appelons la méthode set. Donc, point fixe. Ici, nous passons un objet avec des paires
clé-valeur à mettre à jour. Nous pouvons donc définir si la publication est vraie et l'auteur pour
un autre auteur. Donc, fondamentalement, ces deux
approches sont identiques. Celui que vous choisissez est purement
votre préférence personnelle. Dans cette démo, je vais
utiliser la première approche, et enfin, nous appelons
la méthode save. C'est la même méthode que celle que nous avons utilisée précédemment, créer
un nouveau cours. Il renvoie donc une promesse. Nous pouvons l'attendre, obtenir le résultat et l'afficher sur la console. Donc, résultat du journal à points de la console. Maintenant, je vais
retourner à Encompass et obtenir un identifiant de cours valide C'est bon. Dans
notre collection de cours, je vais donc récupérer cet identifiant de
cours et le coller ici. Maintenant, de retour dans le terminal, lançons ce programme. Voici le cours
que nous avons mis à jour. Écoutez, l'auteur est défini
sur un autre auteur. Dans la prochaine conférence, je vais
vous montrer comment mettre à jour un document directement dans la base de données sans le
récupérer au préalable
15. Compter des documents avec une mangouste: Lors de la dernière conférence, vous avez découvert l'approche fondée sur la
requête pour mettre à jour un document. Cette approche est utile si
vous recevez une entrée
du client et que vous souhaitez vous
assurer que la mise à jour
est une opération valide. Par exemple, nous
avons ici une règle métier. Donc, si le cours est publié, nous ne devrions
peut-être pas être
autorisés à en changer l'auteur. Pour implémenter cette règle métier, nous devons d'abord récupérer
le cours, puis nous devons écrire
une logique comme celle-ci. Donc, si le cours est publié,
nous voulons y retourner. Nous ne voulons pas
mettre à jour ce cours. C'est donc à ce moment-là que nous utilisons l'approche de la
requête d'abord. Mais parfois, vous savez
ce que vous faites, vous ne recevez pas l'
avis du client. Vous souhaitez simplement
mettre à jour un document ou peut-être plusieurs documents
directement dans la base de données. Et c'est ce que je vais vous
montrer dans cette conférence. Ainsi, au lieu d'utiliser
la méthode fine by ID, nous utilisons la méthode update many
ou update one. Maintenant, le premier argument est une requête ou un objet de filtre. Nous pouvons donc
suivre le cours avec cet identifiant, ou nous pouvons passer
quelque chose de plus générique. Nous pouvons accéder à tous les cours
qui ne sont pas publiés. Ainsi, nous pouvons mettre à jour
plusieurs documents en une seule fois. Dans cette démo, nous voulons
mettre à jour un cours avec
un identifiant particulier. Je vais le modifier
pour souligner l'ID et le définir sur l'argument ID. Maintenant, le deuxième argument de la méthode update one
est l'objet de mise à jour. Ici, nous devons utiliser un ou
plusieurs opérateurs de mise à
jour de la base de données Mongo Donc, si vous recherchez des opérateurs de mise à jour de Mongo
DB, vous
trouverez
sur cette page la liste de tous les opérateurs pris en charge Nous avons donc la date actuelle pour définir la valeur d'un champ
à la date actuelle. Nous avons de l'encre ou de l'incrément.
C'est très puissant. Cela nous permet d'
augmenter la valeur d' un champ du montant spécifié Imaginez que vous vouliez créer une
application telle que Facebook. Ainsi, lorsque l'utilisateur aime une publication, vous souhaitez augmenter
le nombre de likes Avec cet opérateur, vous pouvez incrémenter le nombre de s directement
dans la base de données Il n'est pas nécessaire de
réessayer la publication d'abord, puis d'incrémenter le nombre
de s. Vous pouvez également transmettre une valeur négative pour
décrémenter la valeur d'un Nous avons des outils qui sont utiles
si vous souhaitez mettre à jour un champ si la valeur spécifiée est inférieure à la valeur du champ
existant. Nous avons un autre
opérateur similaire, nous permet de mettre à jour un champ si la valeur spécifiée est supérieure à la valeur du champ
existant. Nous avons L ou multipliez, ce qui est un peu
similaire à l'incrémentation. Mais avec cela, nous pouvons multiplier la valeur d'un champ
par le montant spécifié. Nous avons défini, que je vais vous
montrer dans cette conférence, et avec cela, nous pouvons
définir la valeur du champ. Et de la
même manière, nous avons
défini, que nous pouvons utiliser pour supprimer le champ spécifié
d'un document. Donc, de retour dans
notre objet de mise à jour, je vais utiliser
l'opérateur set. Nous l'attribuons à un objet, et dans cet objet, nous ajoutons
une ou plusieurs paires clé-valeur. Supposons donc que nous voulions
améliorer la propriété auor, définir sur Shevin, et que nous voulions définir sa
publication Ainsi, avec cette méthode de mise à jour unique, nous pouvons mettre à jour un
document directement dans la base de données sans le
récupérer au préalable Maintenant, ce que nous obtenons ici est le résultat de l'opération de
mise à jour, et non un objet de cours. Renommons-le donc en résultat. Nous n'avons plus besoin de vérifier
l'existence d'un cours. Nous n'avons pas besoin
de mettre à jour
les propriétés ici, ni de les enregistrer explicitement. OK, c'est très simple. Revenons donc dans le terminal et relançons notre application. Vous pouvez donc voir ici dans
l'objet de résultats que nous avons modifié un document. Et voici ce document
dans notre base de données Mongo DV. L'auteur est donc défini
sur Shiv in et est publié sur
false. Magnifique. Maintenant, vous voulez parfois
obtenir le document
qui a été mis à jour. Si tel est le cas, au lieu de la méthode
update one, vous devez utiliser Fine
by ID et update. Donc, ici, comme premier argument, nous devons transmettre un identifiant
au lieu d'un objet de requête. Et de même, comme
deuxième argument, nous transmettons notre objet de mise à jour. Maintenant, ce que nous obtenons ici
est un objet de cours. Je vais donc
changer l'auteur en
Shevin et le livre sera publié sur True Exécutons ce programme
et voyons ce qui se passe. Donc node, index ou Js. Très bien, voici le
document de cours que nous avons mis à jour. Cependant, écoutez, l'
auteur est toujours
méprisé et sa publication est fausse Nous obtenons donc le document original qui est le document avant
l'opération de
mise à jour. Si vous souhaitez obtenir
le document mis à jour, vous devez passer une option. Nous devons transmettre un autre
argument à cette méthode. Ici, je passe un objet et je définis
la nouvelle propriété sur true. Et avec cela, nous allons obtenir
le document mis à jour, enregistrer. Maintenant, de retour dans le terminal, relançons l'application. OK, écoutez, c'est vrai que l'auteur publie
et publie. Donc, avec cette méthode,
nous enverrons une commande à Mongo Dev pour
mettre à jour le document et le renvoyer Ensuite, je vais vous montrer
comment supprimer un document.
16. Supprimer des documents dans Mangose: Dans cette conférence, je vais vous
montrer comment
supprimer un document. Donc, pour gagner du temps,
je vais obtenir le port pour la fonction de mise à jour du
cours, le
dupliquer, puis le renommer
pour supprimer le cours Et enfin,
remplacez-le par un sac à main amovible. C'est bon.
Implémentons maintenant cette fonction. Donc, pour supprimer un document,
on fait appel à un cours. Ici, nous avons cette
méthode, supprimez-en une. Cette méthode utilise un
filtre ou un objet de requête, nous pouvons
donc transmettre un
objet comme celui-ci. Et avec cet objet de requête, nous pouvons trouver un document
avec un identifiant donné. Maintenant, si nous envoyons quelque chose de plus
générique, comme « est publié », défini sur false, il
se peut que plusieurs cours ne soient pas publiés. Cette méthode, en supprimer une trouvera la
première et la supprimera. Maintenant, dans cette démo, nous
ne voulons pas l'utiliser. Je vais revenir à cet
objet de requête. Maintenant similaire à la méthode
Update One. Cette méthode renvoie une
promesse, afin que nous puissions la supprimer, obtenir le résultat,
le stocker ici, puis l'enregistrer sur la console. Exécutons maintenant ce programme, donc aucun point d'index js. OK, voici notre
objet de résultats et vous pouvez voir que
nous avons supprimé un document. Maintenant, si vous souhaitez supprimer
plusieurs documents, au lieu d'en supprimer
un, utilisez delete Manu Cette méthode
renvoie également un objet de résultat qui indique le nombre de
documents supprimés. Maintenant, si vous voulez récupérer le
document qui a été supprimé, nous avons une autre méthode ici. Posez donc le point fin
par identifiant et retirez-le. Donc, vous passez l'identifiant ici. Cela revient à la promesse. Nous l'attendons, obtenons le résultat et le stockons
dans cet objet de cours. Alors maintenant, je vais vous recommander
cette première ligne. Et nous avons déjà
supprimé ce cours. Lancez donc ce programme
et voyons ce qui se passe. Nœud indexé pour hs. Nous obtenons donc NON. Donc, si nous n'avons pas de
cours correspondant à l'identifiant indiqué, cette méthode renverra NOP