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 bonne compréhension ?
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 privilège
- 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
Chacun de ces logiciels 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 être en mesure de voir un ensemble de binaires situés dans le dossier poubelle
- 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 vers le 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 /setup-folder/
> msiexec.exe /q /i .msi ^
INSTALLLOCATION="C:Program FilesMongoDB" ^
ADDLOCAL="MonitoringTools,ImportExportTools,MiscellaneousTools"
Les commandes ci-dessus vous conduiront au 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 de la base de données par défaut 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 chemin d'accès 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 les bases de données NoSQL, c'est que contrairement aux bases 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 premièreCollection 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 un nombre illimité de paramètres à la requête, cette approche est limitée par le fait 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 comme , MongoDB utilise des expressions rationnelles . Les regex sont des séries de caractères formant un motif à comparer. Les lettres regex sont similaires à celles utilisées en Javascript
Pour la collecte 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({skill:/.*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 "skill" contient le mot-clé MongoDB, tandis que l'autre permet d'obtenir les personnes compétentes en Java uniquement
Le prochain défi dans les requêtes basées sur des critères est d'effectuer une requête 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 avec 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érifier si la valeur est égale | {marques:{$eq:20}} |
$lt | Vérifier si la valeur est inférieure à | {marques : {$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 à | {marques:{$ne:22}} |
$in | Vérifier si la valeur est égale à l'une 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 tutorielle pour vérifier la liste des collections dans la base de données tutorielle. 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 commandes nécessaires pour filtrer les enregistrements à l'aide d'un JSON, ainsi que la possibilité d'afficher les documents au format JSON ou sous forme de tableau, 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 pour vous demander 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 à effectuer en utilisant 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.
-
Abhishek est un développeur Web qui possède des compétences variées dans de nombreuses technologies de développement Web. Au cours de sa carrière professionnelle, il a travaillé sur de nombreuses applications d'entreprise et a compris l'architecture technologique et... en savoir plus