Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Angular et Node.js
  3. MongoDB
Extrait - Angular et Node.js Développement web full stack avec MEAN
Extraits du livre
Angular et Node.js Développement web full stack avec MEAN Revenir à la page d'achat du livre

MongoDB

Qu’est-ce que MongoDB ?

MongoDB est un système de gestion de base de données (SGBD) NoSQL populaire et open source. Contrairement aux bases de données relationnelles traditionnelles, MongoDB ne stocke pas les données dans des tables avec des lignes et des colonnes. Au lieu de cela, il utilise une structure de données flexible appelée document. Les documents sont des ensembles de paires clé- valeur comparables à des objets JSON, ce qui permet de stocker des données de manière semi-structurée. MongoDB offre de nombreux avantages par rapport aux SGBD relationnels.

Un autre aspect clé de MongoDB est sa prise en charge de l’indexation et des requêtes rapides. Il utilise un système d’indexation performant pour accélérer les opérations de recherche et de filtrage des données. MongoDB prend également en charge des requêtes riches en fonctionnalités, telles que les recherches géospatiales, les agrégations de données et les jointures entre collections. En utilisant MongoDB, vous pouvez stocker une grande variété de données, des simples documents JSON aux fichiers binaires volumineux. MongoDB offre également des fonctionnalités avancées telles que la réplication pour la haute disponibilité et la tolérance aux pannes. MongoDB est une base...

Pourquoi utiliser un SGBD NoSQL et MongoDB ?

Comparativement aux bases de données relationnelles traditionnelles, les bases de données NoSQL offrent de nombreux avantages. Tout d’abord, elles sont plus flexibles et peuvent s’adapter facilement à des schémas de données non structurées ou en constante évolution. Elles sont également plus évolutives et peuvent gérer des volumes de données beaucoup plus importants. Les bases de données NoSQL sont également plus rapides en traitement des données, avec une excellente extensibilité et une réplication facile. Elles offrent des performances de requête élevées, même avec des requêtes complexes et des données massives.

Ces avantages en font un choix idéal pour les applications qui nécessitent un traitement de données rapide et une grande évolutivité, tels que les applications web et mobiles.

Lorsqu’il s’agit de MongoDB, Node.js bénéficie d’une intégration étroite avec la base de données grâce à des pilotes et à des bibliothèques spécifiques, tels que Mongoose et le pilote MongoDB Node.js. Ces outils fournissent des fonctionnalités supplémentaires et des API spécifiques à MongoDB, ce qui facilite le développement...

Les fonctionnalités de MongoDB

Comme nous l’avons vu, MongoDB est une base de données NoSQL populaire utilisée pour stocker des données non structurées ou semi-structurées. Contrairement aux bases de données relationnelles qui utilisent des tables et des schémas pour organiser les données, MongoDB utilise des documents JSON pour stocker les données. Cela donne à MongoDB un avantage en termes de flexibilité, de scalabilité et de performance pour les applications web modernes. Parmi les fonctionnalités clés de MongoDB, citons la réplication, qui permet de créer des copies de la base de données pour garantir la disponibilité et la tolérance aux pannes, ainsi que le sharding, qui permet de distribuer les données sur plusieurs serveurs pour améliorer les performances.

images/04EI02.png

Description de MongoDB

MongoDB prend également en charge les index pour accélérer les requêtes et les agrégations afin d’effectuer des opérations de traitement de données complexes. MongoDB dispose d’une API riche et facile à utiliser pour accéder aux données à partir d’applications web. Les développeurs peuvent utiliser des pilotes officiels pour les langages populaires tels que JavaScript, Python, Java, Ruby, etc.

  • Modélisation flexible...

Les collections et les documents

1. Les collections

Dans MongoDB, les données sont stockées dans des collections, qui sont l’équivalent des tables dans les bases de données relationnelles. Cependant, contrairement aux tables, les collections n’ont pas besoin d’un schéma fixe. Les documents qui composent une collection peuvent avoir des structures différentes, ce qui offre une grande flexibilité dans la modélisation des données. Pour créer une collection, vous pouvez utiliser la méthode db.createCollection() dans la console de MongoDB ou recourir à une API de gestion de base de données. Il est important de donner des noms significatifs aux collections pour faciliter la gestion et la recherche des données. Chaque document dans une collection possède un identifiant unique (ID), qui est automatiquement généré par MongoDB lors de l’insertion du document pour la première fois. Il est également possible de spécifier un ID personnalisé lors de l’insertion d’un document.

Dans MongoDB, tous les documents (les tables en langage SQL) possèdent quoi qu’il arrive un champ _id qui correspond à l’ID unique. Cela lui permet de stocker plusieurs documents ayant les mêmes informations et rend chaque document unique.

Les documents peuvent contenir des champs de différents...

Les index

L’indexation dans MongoDB est un élément clé de l’optimisation des performances d’une application. Un index est une structure de données qui stocke des références aux documents d’une collection, triés selon un ou plusieurs champs spécifiés. Cela permet à MongoDB d’accéder plus rapidement aux données demandées et de réduire les temps de traitement des requêtes. Pour créer un index dans MongoDB, vous pouvez utiliser la méthode createIndex() sur la collection appropriée. Par exemple, la commande suivante crée un index sur le champ name dans une collection Person :

db.Person.createIndex({ name: 1 }) 

Dans cet exemple, l’index est créé sur le champ name avec un tri croissant (1 indique l’ordre croissant, -1 l’ordre décroissant). Il est recommandé de créer des index pour les champs fréquemment utilisés dans vos requêtes, tels que les champs de recherche, de tri et de filtrage. Cela permet d’améliorer la vitesse d’exécution des requêtes correspondantes.

De manière générale, les éléments que l’on définit en tant qu’index sont ceux qui permettent d’effectuer des recherches ou les points d’entrée des collections. Dans...

L’installation de MongoDB

1. Sous Ubuntu

Les étapes ci-après décrivent l’installation de MongoDB à partir des dépôts officiels Ubuntu. Par conséquent, avant de vous lancer, assurez-vous d’avoir les privilèges administratifs sur votre système Ubuntu pour effectuer les commandes d’installation.

Les commandes suivantes fonctionnent sous Ubuntu 20.04 ou une version ultérieure. Si vous utilisez une version antérieure d’Ubuntu, les commandes peuvent différer légèrement.

Pour plus d’informations sur la configuration et l’utilisation de MongoDB, consultez la documentation officielle https://docs.mongodb.com/manual/. La ressource est plutôt complète et décrit parfaitement les différentes étapes.

 Mettez à jour votre système :

sudo apt update 

 Installez MongoDB en utilisant la commande apt :

sudo apt install mongodb 

 Après l’installation, MongoDB démarre automatiquement. Vérifiez éventuellement l’état du service :

sudo systemctl status mongodb 

 Par défaut, MongoDB écoute sur le port 27017. Si vous le souhaitez, vérifiez si le service écoute correctement :

netstat -plntu | grep 27017 

 Vous pouvez maintenant commencer à utiliser MongoDB. Pour accéder à la console MongoDB, utilisez la commande suivante :

mongo 

Cela vous connecte à une instance locale de MongoDB et vous permet d’exécuter des commandes MongoDB.

2. Sous Windows

 Téléchargez la dernière version...

L’utilisation de MongoDB en ligne de commande

Lorsque vous manipulez MongoDB, il est primordial de savoir naviguer et comprendre la structure de vos bases de données et collections, car cela influence grandement la gestion efficace et l’analyse de vos données.

Maîtriser les commandes MongoDB vous offre la flexibilité nécessaire pour interagir avec vos données, que vous soyez développeur, administrateur de base de données ou utilisateur avancé. En vous familiarisant avec les commandes spécifiques de MongoDB, vous serez en mesure de visualiser les bases de données disponibles, d’en sélectionner une en particulier, et d’explorer les collections qu’elle contient. Cette compétence est particulièrement utile pour le développement d’applications, le débogage, et la gestion quotidienne des données.

Les exemples de commandes suivantes fournissent un aperçu des opérations de base que vous pouvez réaliser, tout en sachant que l’éventail des commandes et options disponibles est bien plus large. N’hésitez pas à explorer le site officiel : https://www.mongodb.com/docs.

# Ouvrir une console MongoDB 
mongo 
 
# Afficher la liste des bases de données 
show dbs 
 
# Sélectionner une base de données spécifique ...

La création et l’insertion de documents dans une collection

Pour ajouter un document MongoDB en ligne de commande, nous allons utiliser insertOne().

Quand vous êtes connecté à MongoDB via les lignes de commande, vous devez définir la base que vous voulez utiliser pour accéder à vos collections. Voici la commande :

use <ma base de données> 

Une fois la base de données sélectionnée, vous pouvez utiliser la commande insertOne() pour ajouter un document individuel à une collection spécifique. Spécifiez les champs et les valeurs du document que vous souhaitez insérer. Par exemple, la commande suivante rajoute un document à la collection students :

db.students.insertOne({ name: "Patrice MALDI", age: 32 }) 

Si vous souhaitez ajouter plusieurs documents à la fois, vous pouvez utiliser la commande insertMany().

Cette commande vous permet d’ajouter plusieurs documents en une seule opération. Spécifiez les champs et les valeurs pour chaque document à ajouter, en les mentionnant dans un tableau.

Par exemple, la commande suivante rajoute plusieurs documents à la collection students :

db.students.insertMany([{ name: "Patrice MALDI", age: 32 }, 
{ name: "Laura", age: 26 }]) 

Une fois que vous avez exécuté une des commandes d’insertion...

L’importation et l’exportation de documents

L’importation et l’exportation de documents MongoDB sont des tâches courantes pour les développeurs, ils doivent souvent migrer des données entre différentes instances de MongoDB ou entre différentes bases de données.

 Pour importer un document JSON dans une collection de la base de données, utilisez l’outil en ligne de commande MongoDB appelé mongoimport.

Voici la commande à utiliser :

mongoimport --db <nom de la base de données> --collection 
<nom de la collection> --file <nom du fichier JSON> 

 Remplacez <nom de la base de données> par le nom de la base de données cible, <nom de la collection> par le nom de la collection dans laquelle vous souhaitez importer les documents, et <nom du fichier JSON> par le nom du fichier JSON contenant les documents à importer. Par exemple :

mongoimport --db persons --collection students 
--file liste_des_etudiants.json 

 Pour exporter des documents depuis MongoDB, utilisez la commande mongoexport. La syntaxe est assez comparable à celle de mongoimport :

mongoexport --db <nom de la base de données> --collection 
<nom de la collection> --out <nom du fichier JSON> 

 Remplacez <nom de la base de données> par le nom de la base de données source...

L’interrogation d’une collection

1. Les différentes méthodes d’interrogation

Il existe plusieurs méthodes pour interroger une collection dans MongoDB :

  • find() : cette méthode est la plus couramment utilisée pour interroger une collection dans MongoDB. Elle permet de spécifier des critères de recherche en utilisant des filtres et des opérateurs logiques. Par exemple :

   db.students.find({ key: "valeur" }) 

Cette requête retourne tous les documents de la collection students qui ont un champ avec la valeur spécifiée.

  • findOne() : cette méthode renvoie le premier document qui correspond aux critères de recherche spécifiés. Elle est souvent utilisée pour récupérer un seul document. Par exemple :

   db.students.findOne({ key: "valeur" }) 

Cette requête retourne le premier document de la collection students qui a un champ avec la valeur spécifiée.

  • count() : cette méthode renvoie le nombre de documents qui correspondent aux critères de recherche spécifiés. Par exemple :

   db.students.count({ key: "valeur" }) 

Cette requête retourne le nombre de documents dans la collection students qui ont un champ avec la valeur spécifiée.

  • distinct() : cette méthode renvoie les valeurs distinctes pour un champ donné dans la collection. Par exemple :

   db.students.distinct("key") 

Cette requête retourne toutes les valeurs distinctes du champ spécifié dans la collection students.

  • aggregate() : cette méthode permet d’exécuter des opérations d’agrégation sur les documents de la collection. Elle est utilisée pour effectuer des calculs complexes et des transformations sur les données. Par exemple :

   db.students.aggregate([ 
     { $group: { _id: "$champ", total: { $sum: "$valeur" } } } 
   ])...

La recherche des documents grâce aux expressions régulières

Les expressions régulières sont largement utilisées dans MongoDB pour effectuer des recherches de documents basées sur des motifs de texte spécifiques. Elles permettent de filtrer les documents qui correspondent à un modèle de chaîne de caractères donné et sont utiles pour rechercher des données complexes et non structurées.

Dans le langage de requête de MongoDB, les expressions régulières (regex) sont utilisées pour effectuer des recherches de motifs complexes dans les chaînes de caractères. Elles offrent une méthode puissante et flexible pour interroger et filtrer les données basées sur des critères de correspondance spécifiques. Parmi les caractères les plus utilisés, nous retrouvons :

  • ^ (caret) : il marque le début d’une chaîne. Lorsqu’il est utilisé dans une expression régulière, il signifie que le motif doit correspondre au début de la chaîne. Par exemple, ^abc correspondra à toute chaîne commençant par abc.

  • $ (dollar) : il marque la fin d’une chaîne. Il est utilisé pour spécifier que le motif doit se trouver à la fin de la chaîne. Par exemple, xyz$ trouvera une correspondance dans toute...

Le référencement des documents et jointures

1. Les différentes méthodes de référencement des documents

Dans MongoDB, vous avez plusieurs méthodes pour référencer des documents, chacune ayant ses propres avantages et inconvénients.

La première méthode consiste à intégrer des documents directement à l’intérieur d’autres documents en les stockant en tant que propriétés.

Cette approche, appelée «  documents intégrés  », est idéale pour les données qui sont spécifiques à un document et qui ne sont pas utilisées ailleurs dans la base de données. Cependant, cela peut rendre les requêtes plus complexes et entraîner une duplication des données.

Une autre méthode courante est l’utilisation de «  documents référencés  », où vous créez une référence à un autre document à l’aide d’une clé étrangère. Les références peuvent être stockées sous forme de chaîne de caractères ou d’objet d’identifiant.

L’objet d’identifiant dans MongoDB, souvent appelé ObjectID, est un type de champ spécial utilisé principalement comme clé primaire pour les documents. Chaque document stocké dans une collection, dans le cas de MongoDB, possède un champ _id unique qui est automatiquement attribué par la base de données s’il est non spécifié lors de l’insertion du document.

Cette approche facilite la gestion des données et offre une meilleure modularité, mais nécessite des requêtes supplémentaires pour récupérer les documents référencés.

Une autre méthode...

La mise à jour et la suppression d’un document

La mise à jour d’un document dans MongoDB se fait en utilisant la méthode update sur la collection MongoDB. Pour cela, il faut fournir un objet de mise à jour qui décrit les modifications à apporter, ainsi qu’un critère de sélection pour identifier le ou les documents à mettre à jour. La requête suivante met à jour des informations sur un étudiant dans la collection students :

db.students.update( 
  { _id: ObjectId("student_id") }, 
  { $set: { age: 32 } } 
); 

Dans cet exemple, nous utilisons l’identifiant unique de l’étudiant pour sélectionner le document à mettre à jour. Ensuite, nous utilisons l’opérateur $set pour spécifier les modifications à apporter. Ici, nous mettons à jour le champ age de l’étudiant en lui affectant 32.

La suppression d’un document dans MongoDB se fait à l’aide de la méthode remove sur la collection MongoDB. La requête suivante supprime un étudiant de la collection students en utilisant son identifiant unique :

db.students.remove( 
  { _id: ObjectId("student_id") } 
); 

Dans cet exemple, nous utilisons l’identifiant unique de l’étudiant...

Conclusion

Dans ce chapitre, nous avons exploré en détail MongoDB et ses fonctionnalités. Nous avons expliqué les notions de collection, de document et d’index, et nous avons abordé l’implémentation de MongoDB, y compris l’installation du système et l’utilisation des commandes pour manipuler les documents et interroger les collections. De plus, nous avons évoqué les expressions régulières et les jointures, puis nous avons détaillé le processus de suppression de documents au sein d’une collection.

Dans le chapitre Connexion entre MongoDB et Node.js, nous poursuivrons notre exploration en examinant comment intégrer MongoDB à Node.js, ce qui nous permettra de créer des applications flexibles et puissantes en exploitant les avantages de cette combinaison.