Opérations CRUD dans MongoDB : Tutoriel avec exemples

Publié: 2020-02-05

Avec l'évolution continue du Web, nous voyons maintenant comment MongoDB et d'autres bases de données d'objets de documents se présentent comme des alternatives aux bases de données SQL conventionnelles. Ces bases de données d'objets de documents présentent plusieurs avantages par rapport aux bases de données SQL, et les plus importants de tous ces avantages incluent l'évolutivité et l'agilité.

Il est important de noter que les données dans MongoDB sont stockées au format de documents JSON (BSON) codés en binaire. Ce format peut avoir une exigence de contenir des tableaux de documents incorporés ou d'ailleurs des valeurs. Un document forme un enregistrement dans MongoDB, qui est une structure créée à partir de paires de valeurs et de champs.

Parlons maintenant des opérations de création, de mise à jour, de récupération et de suppression ou des opérations CRUD dans MongoDB. Ces fonctions peuvent être globalement classées comme des fonctions de modification de données dans MongoDB. Ceux-ci ne peuvent être utilisés que pour une seule collecte. Insert est une fonction de MongoDB qui peut être utilisée pour ajouter des données à la base de données.

Table des matières

Liste des opérations CRUD dans MongoDB

1. Création de documents

Comment les objets sont-ils créés avec MongoDB ? MongoDB utilise BSON - une représentation binaire de JSON - pour son stockage. Ainsi, il est assez facile de comprendre que les méthodes utilisées pour effectuer différentes opérations dans la base de données ont quelque chose à voir avec JavaScript. Créons une collection d'utilisateurs et d'utilisateurs. Il est également important de noter que les tables en SQL sont équivalentes aux collections dans MongoDB.
db.users.save({name:"Mike", job:"doctor",email:"[email protected]"})
Cet exemple utilise MongoDB save() pour enregistrer les données dans la collection.

2. Insertion de documents

  • Insertion par lots : Cette fonction permet d'ajouter une liste de documents en même temps à une base de données. Un lot, à un moment donné, peut contenir des centaines, voire des milliers de documents. Avec la possibilité d'insérer plusieurs documents, cette fonction fonctionne beaucoup plus rapidement que les autres fonctions d'insertion. Une insertion par lots ne nécessite pas que vous souleviez des demandes individuelles pour des centaines ou des milliers de documents. Il fonctionne plutôt comme une requête TCP (Transmission Control Protocol). Le temps pris lors des insertions est toujours nettement inférieur car aucune activité de traitement d'en-tête n'est impliquée. Chaque document à insérer comporte un en-tête qui transmet à la base de données l'opération à effectuer. La plupart du temps, les insertions par lots sont utilisées pour conserver les données des capteurs et les journaux du serveur.
  • Mongoimport : Mongoimport est un outil de ligne de commande qui est utilisé à la place de l'insertion par lots des données essentielles de MySQL, Oracle ou de tout autre système de gestion de base de données relationnelle (RDBMS). Il peut arriver que vous deviez apporter des modifications aux documents - ajouter un ID personnalisé - avant de les stocker sur MongoDB. Une autre chose importante que vous devez savoir est que MongoDB n'accepte que les messages aussi lourds que 16 Mo. Ainsi, l'insertion par lots impose une restriction sur le nombre de messages qu'elle peut contenir.
  • Insertion massive non ordonnée : Dans cette fonction, MongoDB écrit des opérations sans suivre aucun ordre. En cas d'erreur, il poursuivra les opérations d'écriture qui restent sans interruption. MongoDB forme un groupe d'opérations non ordonnées lors de leur exécution. MongoDB peut également rechercher une amélioration des performances en réorganisant les opérations répertoriées avant leur exécution. Ainsi, les applications n'ont pas à s'appuyer sur une séquence lorsqu'elles envisagent cette fonction pour l'insertion en masse. Bulk.getOperations() peut être utilisé pour voir comment MongoDB regroupe un ensemble d'opérations puis les exécute. Cette commande peut être utilisée pour ajouter trois documents en même temps mais sans aucun ordre.
  • Insertion groupée ordonnée : dans cette fonction, MongoDB suit une séquence lors de l'écriture des opérations. Une erreur lors d'une opération d'écriture empêche MongoDB d'effectuer d'autres opérations d'écriture. Les opérations ordonnées sont regroupées en tenant compte de leur continuité et de leur type. Les opérations ordonnées adjacentes appartenant à la même classe sont regroupées.

Par exemple, si une liste ordonnée a une opération d'insertion suivie d'une opération de suppression suivie de deux opérations de mise à jour, MongoDB créera trois groupes pour les empiler. Le premier groupe consistera en une opération d'insertion. Le deuxième groupe aura une opération de suppression. Le troisième groupe regroupera les deux opérations de mise à jour.

Les futures éditions de MongoDB devraient traiter de manière appropriée ce comportement. Chaque groupe de listes groupées ordonnées ne peut pas comporter plus de 1 000 opérations. Dans le cas où le nombre dépasse cette limite maximale, MongoDB crée des groupes plus petits de 1000 opérations ou moins, pour respecter cette limite. Donc, s'il y a 7 000 opérations en bloc ordonnées, il y aura sept groupes, chacun composé de 1 000 opérations en bloc. Pour voir comment le regroupement et l'exécution sont effectués, exécutez d'abord la commande d'insertion en bloc, puis utilisez la commande Bulk.getOperations. Cette commande peut être utilisée pour ajouter trois documents dans l'ordre.

3. Récupérer/lire des documents

Chaque requête dans MongoDB est dirigée vers des documents particuliers. MongoDB identifie les documents en fonction de la condition définie dans une requête, puis renvoie ces documents à leur destination prévue. Une requête de récupération de document peut avoir une projection qui mentionne des conditions ou des critères qui correspondent aux champs du document qui doit être renvoyé.

Les requêtes peuvent être modifiées pour mettre des sauts, des limites et des ordres de tri.

Voyons maintenant comment la condition d'égalité est spécifiée. Utilisez la commande findOne() pour identifier le premier enregistrement d'un document. Pour afficher les résultats dans le bon format, vous pouvez utiliser la jolie méthode.

Utilisez la requête db.items.find().pretty() pour identifier tous les documents répertoriés dans une collection et les afficher tous dans un format standardisé. Vous pouvez utiliser une requête vide pour sélectionner tous les documents - db.items.find( {} ) - cette requête a une clause de requête vide à la fin - elle identifiera donc tous les documents répertoriés dans une collection.

Ne pas spécifier la méthode de recherche avec un document de requête et utiliser une requête vide donnera le même résultat. Ainsi, les requêtes db.items.find( {} ) et db.items.find() sont équivalentes en termes de résultat pour lequel elles sont utilisées.

Vous pouvez manipuler la requête et utiliser la méthode du curseur de requête tandis que la méthode de comptage vous permet de connaître le nombre de documents dans une collection qui correspondent à votre requête. db.items.count()

4. Mise à jour des documents

Vous devez utiliser la méthode update() pour mettre à jour les documents dans MongoDB. La méthode de mise à jour comporte deux éléments importants : requête et mise à jour. Le paramètre de requête vient en premier suivi du paramètre de mise à jour. Voici un exemple

db.users.update({nom : "Mike"}, {âge : 32})

Cependant, ce n'est pas la bonne façon de mettre à jour une paire de valeurs, qui dans ce cas est l'âge. Avec cela, vous écraserez tout dans le document. La seule chose qui restera dans l'âge. Ainsi, lorsque nous devons mettre à jour une seule paire de valeurs dans l'ensemble du document, nous devons utiliser quelques mots-clés.

db.users.update({name : "Mike"}, { $set : { age : 28}})

Cela n'écrasera rien. Vous conserveriez toutes les informations contenues dans le document. Seule la valeur de l'âge sera mise à jour.

5. Suppression de documents

Utilisez la méthode remove – db.courses.remove() – pour supprimer des documents d'une collection. Cette commande supprimera tous les documents de la collection donnée. Ce qu'il ne supprimera pas, ce sont les index et la collection elle-même. Parfois, la commande remove peut prendre une requête en paramètre. Si vous souhaitez supprimer des documents qui correspondent aux critères mentionnés dans la requête, utilisez la commande db.items.remove({"item": "Pen").

Utilisez la commande db.items.remove({” item” : “Bag},1) pour supprimer un seul document d'une collection. Pour supprimer tous les documents, collections et index, utilisez la commande db.courses.drop() (méthode drop).

Conclusion

Si vous souhaitez en savoir plus sur le Big Data, consultez notre programme PG Diploma in Software Development Specialization in Big Data qui est conçu pour les professionnels en activité et fournit plus de 7 études de cas et projets, couvre 14 langages et outils de programmation, pratique pratique ateliers, plus de 400 heures d'apprentissage rigoureux et d'aide au placement dans les meilleures entreprises.

Apprenez des cours de développement de logiciels en ligne dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.

Menez la révolution technologique axée sur les données

Plus de 400 heures d'apprentissage. 14 langues et outils. Statut des anciens de l'IIIT-B.
Programme de certificat avancé en Big Data de l'IIIT Bangalore