MongoDB est l’une des bases de données NoSQL les plus appréciées et admirées pour le développement professionnel. Sa flexibilité, son évolutivité et sa capacité à gérer de gros volumes de données en font un choix de premier ordre pour les applications modernes. Si vous souhaitez maîtriser les requêtes et opérations courantes de MongoDB, vous êtes au bon endroit.
Que vous cherchiez à récupérer et manipuler efficacement des données, à mettre en œuvre des modèles de données robustes ou à créer des applications réactives, l’acquisition d’une compréhension approfondie des requêtes et opérations courantes de MongoDB améliorera sans aucun doute vos compétences.
1. Créer ou changer de base de données
Créer une base de données localement via le Shell MongoDB est simple, surtout si vous avez mis en place un cluster distant. Vous pouvez créer une nouvelle base de données dans MongoDB avec la commande utiliser commande :
use db_name
Bien que la commande ci-dessus crée une nouvelle base de données, vous pouvez l’utiliser pour basculer vers une base de données existante sans en créer une nouvelle à partir de zéro.
2. Abandonner la base de données
Tout d’abord, accédez à la base de données que vous souhaitez supprimer à l’aide de la commande utiliser comme précédemment. Supprimez ensuite la base de données à l’aide de la commande dropDatabase() commande :
use db_name
db.dropDatabase()
3. Créer une collection
Pour créer une collection, passez à la base de données cible. Utilisez l’option createCollection() pour créer une nouvelle collection MongoDB :
db.createCollection("collection_name")
Remplacer nom_de_la_collection avec le nom de la collection que vous avez choisi.
4. Insérer un document dans une collection
Lors de l’envoi de données à une collection, vous pouvez insérer un document unique ou un tableau de documents.
Pour insérer un seul document :
db.collection_name.insertOne({"Name":"Idowu", "Likes":"Chess"})
Vous pouvez également utiliser la méthode ci-dessus pour insérer un tableau de documents avec un seul identifiant :
db.collection_name.insertOne(({"Name":"Idowu", "Likes":"Chess"}, {"Language": "Mongo", "is_admin": true}))
Pour insérer plusieurs documents à la fois, chacun ayant son propre identifiant, utilisez la méthode insertMany mot-clé :
db.collection_name.insertMany(({"Name":"Idowu", "Likes":"Chess"}, {"Name": "Paul", "Likes": "Wordle"}))
5. Obtenir tous les documents d’une collection
Vous pouvez interroger tous les documents d’une collection à l’aide de la fonction find() mot-clé :
db.collection_name.find()
La méthode ci-dessus renvoie tous les documents contenus dans la collection spécifiée :
Vous pouvez également limiter les données renvoyées à un nombre spécifique. Par exemple, vous pouvez utiliser la commande suivante pour obtenir uniquement les deux premiers documents :
db.collection_name.find().limit(2)
6. Filtrer les documents d’une collection
Il existe de nombreuses façons de filtrer les documents dans MongoDB. Prenons par exemple les données suivantes :
Si vous ne demandez qu’un champ spécifique dans un document, utilisez l’option rechercher méthode :
db.collection_name.find({"Likes":"Wordle"}, {"_id":0, "Name":1})
La méthode ci-dessus renvoie tous les documents pour lesquels la valeur de Aime est Wordle. Il n’affiche que les noms et ignore l’identifiant du document.
Vous pouvez également filtrer une collection par un facteur numérique. Si vous souhaitez obtenir les noms de tous les utilisateurs âgés de plus de 21 ans, utilisez la commande $gt opérateur :
db.collection_name.find({"Likes":"Chess", "Age":{"$gt":21}}, {"_id":0, "Name":1})
La sortie ressemble à ceci :
Essayez de remplacer trouver avec findOne pour voir ce qui se passe. Cependant, il existe de nombreux autres mots-clés de filtrage :
- $lt: Toutes les valeurs inférieures à la valeur spécifiée.
- $gte: Valeurs égales ou supérieures à la valeur spécifiée.
- $lte: Valeurs inférieures ou égales à la valeur définie.
- $eq: Obtient toutes les valeurs égales à la valeur spécifiée.
- $ne: Toutes les valeurs ne sont pas égales à la valeur spécifiée.
- $in: Utilisez cette fonction lorsque vous effectuez une requête à partir d’un tableau. Il obtient toutes les valeurs correspondant à l’un des éléments du tableau. Les $nin fait le contraire.
7. Trier les requêtes
Le tri permet de classer la requête dans un ordre spécifique. Vous pouvez trier par ordre décroissant ou croissant. N’oubliez pas que le tri nécessite une référence numérique.
Par exemple, pour trier par ordre croissant :
db.collection_name.find({"Likes":"Chess"}).sort({"Age":1})
Pour trier la requête ci-dessus par ordre décroissant, remplacez « 1 » par « -1 ».
db.collection_name.find({"Likes":"Chess"}).sort({"Age":-1})
8. Mettre à jour un document
Les mises à jour de MongoDB nécessitent des opérateurs atomiques pour spécifier comment vous voulez que la mise à jour soit effectuée. Voici une liste d’opérateurs atomiques couramment utilisés que vous pouvez associer à une requête de mise à jour :
- $set: Ajouter un nouveau champ ou modifier un champ existant.
- $push: Insérer un nouvel élément dans un tableau. L’associer à l’élément $each pour insérer plusieurs éléments à la fois.
- $pull: Retirer un élément d’un tableau. A utiliser avec $in pour supprimer plusieurs éléments en une seule fois.
- $unset: Supprime un champ d’un document.
Pour mettre à jour un document et ajouter un nouveau champ, par exemple :
db.collection_name.updateOne({"Name":"Sandy"}, {"$set":{"Name":"James", "email":"example@gmail.com"}})
L’exemple ci-dessus met à jour le document spécifié comme indiqué :
La suppression du champ email est simple avec la commande $unset opérateur :
db.collection_name.updateOne({"Name":"Sandy"}, {"$unset":{"email":"example@gmail.com"}})
Considérons l’échantillon de données suivant :
Vous pouvez insérer un élément dans la base de données articles champ de tableau en utilisant l’option $push opérateur :
db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items":"Plantain"}})
Voici le résultat :
Utiliser la fonction $each pour insérer plusieurs éléments à la fois :
db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items": {"$each":("Almond", "Melon")}}})
Voici le résultat :
Comme nous l’avons mentionné, le $pull supprime un élément d’un tableau :
db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items":"Plantain"}})
Les données mises à jour se présentent comme suit :
Inclure le $in mot-clé permettant de supprimer plusieurs éléments d’un tableau en une seule fois :
db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items": {"$in":("Almond", "Melon")} }})
9. Supprimer un document ou un champ
Le supprimerOne ou deleteMany met à la poubelle un document d’une collection. Utiliser le mot-clé deleteOne pour supprimer un document sur la base d’un champ spécifié :
db.collection_name.deleteOne({"Name":"IDNoble"})
Si vous souhaitez supprimer plusieurs documents ayant des clés communes, utilisez la fonction deleteMany à la place. La requête ci-dessous supprime tous les documents contenant Échecs comme leur Aime.
db.collection.deleteMany({"Likes":"Chess"})
10. Opération d’indexation
L’indexation améliore les performances des requêtes en rationalisant le nombre de documents que MongoDB doit analyser. Il est souvent préférable de créer un index sur les champs que vous interrogez le plus souvent.
L’indexation de MongoDB est similaire à la façon dont vous utilisez les index pour optimiser les requêtes SQL. Par exemple, pour créer un index ascendant sur le champ Nom champ :
db.collection.createIndex({"Name":1})
Pour lister vos index :
db.collection.getIndexes()
Ce qui précède n’est qu’un préambule. Il existe plusieurs autres 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 d’exécuter et de stocker des calculs complexes à partir de MongoDB. Contrairement à MapReduce, qui nécessite d’écrire les fonctions map et reduce dans des fonctions JavaScript séparées, l’agrégation est simple et n’utilise que des méthodes intégrées à MongoDB.
Prenons par exemple les données de vente suivantes :
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.sales.aggregate(({$group:{"_id":"$Section", "totalSold":{$sum:"$Sold"}}}, {$project:{"_id":0, "totalSold":1, "Section":"$_id"}}))
La requête ci-dessus renvoie les résultats suivants :
Requêtes principales MongoDB
MongoDB propose de nombreuses méthodes d’interrogation, y compris des fonctionnalités permettant d’améliorer les performances des requêtes. Quel que soit votre langage de programmation, les structures de requête ci-dessus sont rudimentaires pour interagir avec une base de données MongoDB.
Il peut cependant y avoir des différences dans les syntaxes de base. Par exemple, alors que certains langages de programmation comme Python reconnaissent les cas de serpent, d’autres, y compris JavaScript, utilisent le cas de chameau. Veillez à vous renseigner sur ce qui fonctionne pour la technologie que vous avez choisie.