MongoDB se distingue comme une base de données NoSQL de premier plan, très prisée dans le développement professionnel. Sa souplesse, son adaptabilité et sa capacité à gérer d’importants volumes de données en font un outil de choix pour les applications modernes. Si vous souhaitez maîtriser les requêtes et les opérations fondamentales de MongoDB, vous êtes au bon endroit.
CONTENU VIDÉO DU JOUR
FAITES DÉFILER POUR DÉCOUVRIR LA SUITE DE L’ARTICLE
Que votre objectif soit de récupérer et de manipuler efficacement des données, de mettre en place des structures de données robustes ou de développer des applications réactives, une compréhension approfondie des requêtes et des opérations courantes de MongoDB améliorera incontestablement vos compétences.
1. Création ou sélection d’une base de données
La création d’une base de données en local via l’interface MongoDB Shell est un processus simple, particulièrement si vous avez configuré un cluster distant. Vous pouvez initier une nouvelle base de données dans MongoDB en utilisant la commande `use` :
use nom_de_la_base
Bien que la commande ci-dessus permette de créer une nouvelle base de données, elle peut également être utilisée pour se connecter à une base de données existante sans en générer une nouvelle.
2. Suppression d’une base de données
Commencez par vous connecter à la base de données que vous souhaitez supprimer en utilisant la commande `use` comme mentionné précédemment. Ensuite, supprimez la base de données à l’aide de la commande `dropDatabase()` :
use nom_de_la_base
db.dropDatabase()
3. Création d’une collection
Pour créer une collection, connectez-vous à la base de données souhaitée. Utilisez le mot-clé `createCollection()` pour créer une nouvelle collection MongoDB :
db.createCollection("nom_de_la_collection")
Remplacez `nom_de_la_collection` par le nom de votre choix pour la collection.
4. Insertion d’un document dans une collection
Lors de l’envoi de données vers une collection, vous avez la possibilité d’insérer un document unique ou une série de documents.
Pour insérer un document unique :
db.nom_de_la_collection.insertOne({"Nom":"Idowu", "Passions":"Echecs"})
Vous pouvez également employer cette méthode pour insérer un ensemble de documents sous un seul identifiant :
db.nom_de_la_collection.insertOne([{"Nom":"Idowu", "Passions":"Echecs"}, {"Langage": "Mongo", "est_admin": true}])
Pour insérer simultanément plusieurs documents, chacun avec des identifiants distincts, utilisez le mot-clé `insertMany` :
db.nom_de_la_collection.insertMany([{"Nom":"Idowu", "Passions":"Echecs"}, {"Nom": "Paul", "Passions": "Wordle"}])
5. Obtenir tous les documents d’une collection
Vous pouvez extraire tous les documents d’une collection en utilisant le mot-clé `find()` :
db.nom_de_la_collection.find()
Cette commande renvoie tous les documents présents dans la collection spécifiée.
Il est également possible de limiter le nombre de données retournées. Par exemple, la commande suivante permet de n’obtenir que les deux premiers documents :
db.nom_de_la_collection.find().limit(2)
6. Filtrer les documents d’une collection
MongoDB offre de multiples options pour filtrer les documents. Prenons l’exemple des données suivantes :
Si vous souhaitez interroger uniquement un champ spécifique d’un document, utilisez la méthode `find` :
db.nom_de_la_collection.find({"Passions":"Wordle"}, {"_id":0, "Nom":1})
Cette requête renvoie tous les documents où la valeur du champ « Passions » est « Wordle ». Seuls les noms sont affichés, l’identifiant du document étant ignoré.
Il est aussi possible de filtrer une collection selon un facteur numérique. Supposons que vous souhaitiez obtenir les noms de tous les utilisateurs de plus de 21 ans, utilisez l’opérateur `$gt` :
db.nom_de_la_collection.find({"Passions":"Echecs", "Age":{"$gt":21}}, {"_id":0, "Nom":1})
Le résultat se présente ainsi :
Essayez de remplacer `find` par `findOne` pour observer le changement. De nombreux autres mots-clés de filtrage existent :
- `$lt` : toutes les valeurs inférieures à celle spécifiée.
- `$gte` : les valeurs égales ou supérieures à celle spécifiée.
- `$lte` : les valeurs inférieures ou égales à celle définie.
- `$eq` : récupère toutes les valeurs égales à celle spécifiée.
- `$ne` : toutes les valeurs différentes de celle spécifiée.
- `$in` : utilisé lors d’une requête basée sur un tableau, il obtient toutes les valeurs correspondant à l’un des éléments du tableau. Le mot-clé `$nin` effectue l’opération inverse.
7. Trier les requêtes
Le tri permet d’organiser une requête selon un ordre spécifique, ascendant ou descendant. Il est essentiel de noter que le tri nécessite une référence numérique.
Par exemple, pour trier par ordre croissant :
db.nom_de_la_collection.find({"Passions":"Echecs"}).sort({"Age":1})
Pour trier la requête ci-dessus par ordre décroissant, remplacez « 1 » par « -1 ».
db.nom_de_la_collection.find({"Passions":"Echecs"}).sort({"Age":-1})
8. Mise à jour d’un document
Les mises à jour dans MongoDB exigent l’emploi d’opérateurs atomiques pour définir comment la mise à jour doit s’effectuer. Voici une liste des opérateurs atomiques couramment employés que vous pouvez combiner avec une requête de mise à jour :
- `$set` : ajoute un nouveau champ ou modifie un champ existant.
- `$push` : insère un nouvel élément dans un tableau. Associez-le à l’opérateur `$each` pour insérer plusieurs éléments en une seule opération.
- `$pull` : supprime un élément d’un tableau. Utilisez-le avec `$in` pour supprimer plusieurs éléments simultanément.
- `$unset` : supprime un champ d’un document.
Pour mettre à jour un document et ajouter un nouveau champ, par exemple :
db.nom_de_la_collection.updateOne({"Nom":"Sandy"}, {"$set":{"Nom":"James", "email":"[email protected]"}})
Cette commande met à jour le document spécifié comme suit :
La suppression du champ email est simplifiée avec l’opérateur `$unset` :
db.nom_de_la_collection.updateOne({"Nom":"Sandy"}, {"$unset":{"email":"[email protected]"}})
Considérez les exemples de données suivants :
Vous pouvez insérer un élément dans le champ tableau des éléments existants en utilisant l’opérateur `$push` :
db.nom_de_la_collection.updateOne({"Nom":"Pete"}, {"$push":{"items":"Plantain"}})
Voici le résultat :
Utilisez l’opérateur `$each` pour insérer plusieurs éléments simultanément :
db.nom_de_la_collection.updateOne({"Nom":"Pete"}, {"$push":{"items": {"$each":["Amande", "Melon"]}}})
Voici le résultat :
Comme mentionné, l’opérateur `$pull` supprime un élément d’un tableau :
db.nom_de_la_collection.updateOne({"Nom":"Pete"}, {"$pull":{"items":"Plantain"}})
Les données mises à jour se présentent ainsi :
Incluez le mot-clé `$in` pour supprimer plusieurs éléments d’un tableau simultanément :
db.nom_de_la_collection.updateOne({"Nom":"Pete"}, {"$pull":{"items": {"$in":["Amande", "Melon"]} }})
9. Suppression d’un document ou d’un champ
Le mot-clé `deleteOne` ou `deleteMany` permet de supprimer un document d’une collection. Utilisez `deleteOne` pour supprimer un document basé sur un champ spécifié :
db.nom_de_la_collection.deleteOne({"Nom":"IDNoble"})
Si vous souhaitez supprimer plusieurs documents ayant des clés en commun, utilisez plutôt `deleteMany`. La requête ci-dessous supprime tous les documents où les échecs sont mentionnés comme une passion.
db.nom_de_la_collection.deleteMany({"Passions":"Echecs"})
10. Opération d’indexation
L’indexation améliore la performance des requêtes en réduisant le nombre de documents que MongoDB doit analyser. Il est souvent judicieux de créer un index sur les champs que vous interrogez le plus fréquemment.
L’indexation dans MongoDB est similaire à l’utilisation des index pour optimiser les requêtes SQL. Par exemple, pour créer un index croissant sur le champ `Nom` :
db.nom_de_la_collection.createIndex({"Nom":1})
Pour consulter vos index :
db.nom_de_la_collection.getIndexes()
Ce qui précède n’est qu’une introduction. Il existe de multiples méthodes pour créer un index dans MongoDB.
11. Agrégation
Le pipeline d’agrégation, une version améliorée de MapReduce, vous permet de réaliser et de sauvegarder des calculs complexes à partir de MongoDB. Contrairement à MapReduce, qui nécessite l’écriture des fonctions de carte et de réduction dans des fonctions JavaScript distinctes, l’agrégation est simple et n’utilise que les méthodes intégrées de MongoDB.
Considérez les données de ventes suivantes, par exemple :
En utilisant l’agrégation de MongoDB, vous pouvez calculer et stocker le nombre total de produits vendus pour chaque catégorie, comme suit :
db.ventes.aggregate([{$group:{"_id":"$Section", "totalVendu":{$sum:"$Vendu"}}}, {$project:{"_id":0, "totalVendu":1, "Section":"$_id"}}])
La requête ci-dessus retourne le résultat suivant :
Maîtriser les requêtes MongoDB
MongoDB propose de nombreuses méthodes d’interrogation, incluant des fonctionnalités pour améliorer les performances des requêtes. Quelle que soit votre langage de programmation, les structures de requête présentées ci-dessus sont essentielles pour interagir avec une base de données MongoDB.
Cependant, des divergences peuvent exister au niveau des syntaxes de base. Par exemple, alors que certains langages de programmation, comme Python, reconnaissent les cas de serpent, d’autres, tels que JavaScript, emploient le cas de chameau. Assurez-vous de vérifier ce qui convient à la technologie que vous avez choisie.