Découvrez ce qu’est MongoDB, le guide d’installation et le fonctionnement de base.
MongoDB NoSQL est plus que jamais d’actualité. En avez-vous une connaissance suffisante ?
Ne vous inquiétez pas si ce n’est pas le cas, ce qui suit vous aidera.
Introduction
Avec le changement de paradigme du site web vers un contenu dynamique, la demande de base de données No-SQL a augmenté. Cela a donné naissance à de nombreuses bases de données No-SQL telles que MongoDB.
Classée parmi les bases de données No-SQL, MongoDB est une base de données basée sur des documents qui stocke les données sous forme de documents JSON avec un identifiant autogénéré pour chaque document.
Une base de données No-SQL est une base de données dont la structure des tables n’est pas fixe, contrairement aux bases de données SQL structurées. MongoDB stocke les données sous la forme de chaînes JSON, indépendamment du nombre d’attributs ou des noms d’attributs dans une colonne spécifique.
Cela permet aux développeurs d’apporter rapidement des modifications aux entités sans qu’il soit nécessaire de modifier la base de données.
Installation de MongoDB
MongoDB, comme toute autre base de données, est disponible en plusieurs variantes en fonction des besoins de développement. Les variantes sont listées ci-dessous et peuvent être utilisées ou téléchargées à partir de ce lien
- MongoDB Atlas – Base de données en tant que service
- Community Server – Utilisation gratuite pour la communauté des développeurs
- MongoDB Enterprise Edition – La version commerciale avec des fonctionnalités supplémentaires
Chacune de ces versions est entièrement compatible avec tous les systèmes d’exploitation. Pour commencer l’installation d’un serveur communautaire, téléchargez le fichier d’installation correspondant à votre système d’exploitation.
Le processus d’installation diffère légèrement d’un système d’exploitation à l’autre, c’est pourquoi nous allons procéder à l’installation de chaque système d’exploitation séparément.
Installation sur MacOS
Pour installer MongoDB sous MacOS. Téléchargez l’archive .tgz contenant les binaires nécessaires. En désarchivant le fichier, vous devriez pouvoir voir un ensemble de binaires situés dans le dossier bin.
- Déplacez le dossier bin à l’emplacement souhaité
- Ouvrez un terminal et changez le répertoire pour le répertoire bin mentionné ci-dessus
- Exécutez la commande ci-dessous pour créer une base de données à l’emplacement souhaité.
./mongod --dbpath /chemin-au-répertoire-désiré/
Dans la commande ci-dessus, remplacez le chemin d’accès au répertoire par le chemin d’accès souhaité et le serveur sera démarré dès l’exécution de la commande.
Installation sous Windows
Le centre de téléchargement de MongoDB fournit un paquet .msi exécutable pour installer MongoDB sous Windows. L’installation sous Windows est assez simple et peut être effectuée à l’aide de quelques commandes une fois que l’installation a été téléchargée.
- Exécutez les commandes ci-dessous pour installer MongoDB sur un PC/serveur Windows.
> cd /dossier d'installation/
> msiexec.exe /q /i .msi ^
INSTALLLOCATION="C:Program FilesMongoDB" ^
ADDLOCAL="MonitoringTools,ImportExportTools,MiscellaneousTools"
Les commandes ci-dessus vous emmèneront dans le répertoire correspondant et exécuteront le setup pour l’installation à l’emplacement spécifié. Une fois l’installation terminée, vous devez configurer le chemin de stockage par défaut de la base de données pour MongoDB.
La commande ci-dessous vous aide à le faire.
> md dbdata
La commande ci-dessus crée un dossier db/data dans le répertoire vers lequel pointe actuellement l’invite de commande. Si vous devez reconfigurer la base de données, vous pouvez utiliser mongod.exe avec l’argument dbpath comme indiqué ci-dessous :
>C:Program FilesMongoDBbinmongod.exe" --dbpath d:tutorialmongodbdata
Installation sous Linux
Comme pour macOS, MongoDB pour les variantes Linux est également disponible sous la forme d’un ensemble de binaires archivés. Le processus d’installation de MongoDB est assez similaire.
- Déplacez les fichiers binaires à l’emplacement souhaité
- Ouvrez le terminal dans le dossier
- Exécutez la commande ci-dessous avec l’emplacement de la base de données souhaitée
./mongod --dbpath /répertoire désiré/
Création de la première collection
MongoDB stocke les données sous forme de documents JSON. Un groupe de documents de ce type est collectivement connu sous le nom de collection dans MongoDB. Ainsi, une collection est analogue à une table dans une base de données relationnelle, tandis qu’un document est analogue à un enregistrement.
Pour stocker des documents, nous devons d’abord créer une collection. Ce qui est intéressant avec une base de données NoSQL, c’est que contrairement à une base de données SQL, vous n’avez pas besoin de spécifier les noms des colonnes ou les types de données.
La première étape de la création d’une collection consiste à créer une base de données. Pour créer une base de données et vous y connecter à l’aide de la ligne de commande, exécutez la commande suivante à partir du répertoire d’origine de l’installation de MongoDB.
./bin/mongo tutorial
Cette commande est utilisée pour démarrer la connexion à la base de données et se connecter simultanément à la base de données du didacticiel. Elle affichera un certain nombre de lignes dans le journal pour indiquer que la ligne de commande s’est connectée à la base de données MongoDB.
Un exemple d’image de ligne de commande a été affiché ci-dessous pour vous donner une meilleure idée.
- Pour créer une collection, exécutez la commande suivante :
$ > db.createCollection('firstCollection') ;
C’est ainsi qu’une collection vide est créée. L’étape suivante consiste à insérer des données et à effectuer des traitements sur les enregistrements à l’aide de la ligne de commande MongoDB.
Insertion d’un document dans la collection
Comme nous l’avons vu plus haut, il est possible d’insérer presque n’importe quel JSON dans chaque collection MongoDB.
Commençons par l’insertion du premier document JSON dans la collection firstCollection créée ci-dessus.
> db.firstCollection.insertOne({name:'Abhishek',skill:'MongoDB'}) ;
La commande ci-dessus insère un seul document JSON dans la collection firstCollection. La même chose peut être vérifiée en utilisant la commande ci-dessous :
> db.firstCollection.find() ;
La commande ci-dessus peut être utilisée de multiples façons, en fonction de la variation de la fonction find()
. Lorsqu’aucun argument n’est spécifié, comme c’est le cas avec la commande ci-dessus, elle récupère tous les documents disponibles dans la collection.
Vous pouvez insérer un enregistrement supplémentaire et essayer la même chose. Ce faisant, la sortie de la commande ci-dessus sera similaire à celle illustrée ci-dessous :
> db.firstCollection.find() ; {"_id" : ObjectId("5b043a32c29a7184535e783a"), "name" : "Abhishek", "skill" : "MongoDB" } { "_id" : ObjectId("5b05b4f0c29a7184535e783b"), "name" : "GeekFlare", "skill" : "Java,MongoDB,NodeJS" }
Comme vous pouvez le constater, deux enregistrements disponibles sont affichés. La fonction find()
peut être facilement utilisée pour filtrer les documents en fonction de paramètres spécifiques. Filtrons le document à l’aide de l’attribut name.
Le processus de filtrage est simple et peut être compris à partir de la commande ci-dessous :
db.firstCollection.find({name:'Abhishek'}) ; {"_id" : ObjectId("5b043a32c29a7184535e783a"), "name" : "Abhishek", "skill" : "MongoDB" }
Le filtre peut également être utilisé avec plusieurs attributs dans le JSON. Bien qu’il soit possible d’ajouter n’importe quel nombre de paramètres à la requête, la limite de cette approche est qu’elle ne correspond qu’à la valeur exacte des attributs.
Filtrage des enregistrements à l’aide de Regex
Pour exécuter l’équivalent en MongoDB d’une clause MySQL like , MongoDB utilise des regex . Les regex sont des séries de caractères formant un motif à comparer. Les caractères regex sont similaires à ceux utilisés en Javascript.
Pour la collection actuelle, nous allons essayer de récupérer les données en faisant correspondre un motif à l’attribut skill. La commande ci-dessous permet d’obtenir la liste des personnes ayant la compétence MongoDB. Ainsi, elle récupérera deux enregistrements car ils contiennent tous deux la chaîne MongoDB.
> db.firstCollection.find({compétences:/.*MongoDB.*/}) ; {"_id" : ObjectId("5b043a32c29a7184535e783a"), "name" : "Abhishek", "skill" : "MongoDB" } { "_id" : ObjectId("5b05b4f0c29a7184535e783b"), "name" : "GeekFlare", "skill" : "Java,MongoDB,NodeJS" } > db.firstCollection.find({skill:/.*Java.*/}) ; { "_id" : ObjectId("5b05b4f0c29a7184535e783b"), "name" : "GeekFlare", "skill" : "Java,MongoDB,NodeJS" }
Le code ci-dessus affiche le résultat de deux chaînes différentes sous la forme d’une expression rationnelle. La première requête permet d’obtenir la liste d’un document dont l’attribut de compétence contient le mot-clé MongoDB, tandis que l’autre permet d’obtenir les personnes ayant des compétences en Java uniquement.
Le prochain défi de l’interrogation basée sur des critères est d’effectuer une interrogation avec une condition OR ou AND.
Requêtes complexes dans MongoDB
Comme il ressort clairement des commandes ci-dessus, les clauses where de MongoDB fonctionnent sur JSON. Le processus de combinaison des conditions dépend également de JSON lui-même. MongoDB fournit des opérateurs tels que $or, $and et $not pour effectuer les opérations de requête appropriées.
Essayons d’obtenir la liste des documents dont l’attribut name contient Abhishek ou skill contient Java.
> db.firstCollection.find({$or : [{name:'Abhishek'},{skill:/.*Java.*/}]} ;) { "_id" : ObjectId("5b043a32c29a7184535e783a"), "name" : "Abhishek", "skill" : "MongoDB" } { "_id" : ObjectId("5b05b4f0c29a7184535e783b"), "name" : "Geekflare", "skill" : "Java,MongoDB,NodeJS" }
Comme on peut le voir, les deux enregistrements sont récupérés. Vous pouvez essayer d’utiliser l’attribut name comme Geekflare et voir le changement. Seul le document comportant trois compétences et le nom Geekflare sera affiché.
De même, il est possible d’utiliser l’opérateur $and
avec un tableau JSON de conditions, comme indiqué ci-dessus.
Pour la prochaine série d’opérateurs, nous devons créer une collection supplémentaire et y ajouter des enregistrements à l’aide des commandes ci-dessous.
> db.createCollection('studentmarks') ; { "ok" : 1 } > db.studentmarks.insertMany([{nom : 'A',notes:20},{nom : 'B',notes:25},{nom : 'C',notes:22},{nom : 'D',notes:30}]) ; { "acknowledged" : vrai, "insertedIds" : [ ObjectId("5b06e7b5c29a7184535e783c"), ObjectId("5b06e7b5c29a7184535e783d"), ObjectId("5b06e7b5c29a7184535e783e"), ObjectId("5b06e7b5c29a7184535e783f") ] }
L’ensemble suivant d’opérateurs que nous utiliserons sont les opérateurs de comparaison dans la requête. Pour comparer des valeurs à l’aide de critères tels que ” moins que “, ” plus que ” ou ” pas égal à“, nous utilisons les opérateurs appropriés dans la valeur que nous transmettons.
Vous trouverez ci-dessous un exemple d’obtention d’une liste d’étudiants dont les notes sont supérieures à 22.
db.studentmarks.find({marks:{$gt:22}}) ; {"_id" : ObjectId("5b06e7b5c29a7184535e783d"), "name" : "B", "marks" : 25 } { "_id" : ObjectId("5b06e7b5c29a7184535e783f"), "name" : "D", "marks" : 30 }
Le $gt
indique ici plus grand que dans les critères. Ainsi, les documents dont les notes sont supérieures à 22 sont affichés. De même, d’autres opérateurs peuvent être utilisés. Ils sont énumérés ci-dessous.
Opérateur | Utilisation | Exemple |
---|---|---|
$eq | Vérifie si la valeur est égale | {marques:{$eq:20}} |
$lt | Vérifier si la valeur est inférieure à | {marks : {$lt:20}} |
$gte | Vérifier si la valeur est supérieure ou égale à | {marks:{$gte:22}} |
$lte | Vérifier si la valeur est inférieure ou égale à | {marks:{$lte:22}} |
$ne | Vérifier si la valeur n’est pas égale à | {marks:{$ne:22}} |
$in | Vérifier si la valeur est égale à l’une ou l’autre des valeurs du tableau | {marks:{$in:[20,22]}} |
$nin | Vérifier si la valeur n’est égale à aucune valeur du tableau | {marks:{$nin:[22,25]}} |
Découvrez d’autres commandes MongoDB ici.
Interface graphique pour MongoDB
Dans la discussion ci-dessus, nous avons utilisé une ligne de commande pour exécuter nos requêtes dans MongoDB.
L’utilisation de la ligne de commande peut s’avérer difficile lorsqu’il s’agit de requêtes complexes et d’un grand nombre de données. Pour faciliter la visualisation des données et l’exécution des requêtes, MongoDB met à votre disposition un excellent outil d’interface graphique appelé MongoDB Compass.
MongoDB Compass peut être facilement téléchargé à partir du site de téléchargement de MongoDB. Une fois que vous avez téléchargé et installé MongoDB Compass, démarrez l’application et vous serez accueilli par un écran similaire à celui illustré ci-dessous.
Étant donné que le serveur MongoDB est opérationnel, cliquez sur Connecter avec les détails par défaut. Vous devriez être connecté et voir la liste des bases de données disponibles.
Cliquez sur la base de données des didacticiels pour consulter la liste des collections de la base de données des didacticiels. Comme indiqué ci-dessous, la liste des collections disponibles dans la base de données des didacticiels s’affiche.
En cliquant sur la collection, la liste des documents s’affiche avec les contrôles nécessaires pour filtrer les enregistrements à l’aide d’un JSON, ainsi que la possibilité d’afficher les documents au format JSON ou au format tabulaire, selon votre convenance.
L’interface graphique simplifie également l’ajout d’un document. Il vous suffit de cliquer sur le bouton Insérer un document dans l’écran ci-dessous. Une petite boîte de dialogue s’ouvre et vous demande les détails du document avec un identifiant généré automatiquement.
L’interface graphique simplifie un grand nombre d’opérations qui pourraient être difficiles à réaliser à l’aide de l’interface de ligne de commande de MongoDB.
Vous pouvez explorer d’autres clients NoSQL.
Conclusion
Nous avons capturé l’essence de NoSQL avec une variété d’exemples et compris l’installation, comment les documents sont différents par rapport à un enregistrement de base de données relationnelle typique. Vous pouvez également vous référer à ce cours en ligne d’apprentissage de MongoDB à partir de zéro.
Et si vous êtes développeur, vous serez peut-être intéressé par celui-ci.