ANNOUNCEMENTVoyage AI joins MongoDB to power more accurate and trustworthy AI applications on Atlas. Learn more >
NEWSLearn why MongoDB was named a leader in the 2024 Gartner® Magic Quadrant™ Read the report >
NEWMongoDB 8.0: Experience unmatched speed and performance. Check it out >

Opérations CRUD MongoDB

Sommaire


Définition de base d’une opération CRUD

La plupart des interactions transactionnelles d’un utilisateur avec une plateforme numérique, comme un site Web ou une application Web, comprennent des requêtes pour quatre opérations de base :

  • Créer quelque chose de nouveau (par exemple, un profil client)
  • Lire (comme récupérer les informations de commande d’un utilisateur)
  • Mettre à jour les informations (comme le numéro de portable ou l’adresse e-mail d’un utilisateur)
  • Supprimer (par exemple, un numéro de téléphone professionnel)

CRUD est axé sur les données et normalisé selon les verbes d’action HTTP. Le front-end d’une application capture les informations et les envoie sous forme de requête HTTP au middleware, qui appelle les fonctions de base de données appropriées pour terminer la tâche. Ces quatre fonctions de base sont collectivement appelées CRUD, acronyme de create, read, update et delete.

Opérations CRUD HTTP et bases de données correspondantes

Exemples d’opérations de base

Les méthodes CRUD sont les principaux moyens de gérer les données de vos bases de données. Qu’il s’agisse d’une opération groupée ou individuelle, les opérations CRUD sont essentielles à chaque application.

Exemples d’opérations Create : création d’un nouveau profil d’utilisateur dans la base de données, d’un panier d’achat pour l’utilisateur ou d’un nouveau catalogue de livres (insertion groupée).

Exemples d’opérations Read : récupération d’informations produit selon un critère de recherche particulier, par exemple lorsque l’utilisateur recherche des téléphones portables de marque « apple », affichage de tous les modèles d’iPhone, affichage d’informations de panier utilisateur ou d’informations d’employé sur le portail.

Exemples d’opérations Update : mise à jour des informations personnelles d’un utilisateur, d’informations de panier, d’adresse de facturation, d’horodatage ou de numéro de série d’une certaine gamme de produits (mise à jour groupée).

Exemples d’opérations Delete : suppression de produits du panier d’un utilisateur, d’un livre des favoris ou de tous les enregistrements antérieurs à une certaine période (suppression groupée).

Examinons maintenant en détail la définition de CRUD et l’exécution des opérations CRUD de MongoDB à l’aide du langage de requête de MongoDB (MQL).

Qu’est-ce que CRUD dans MongoDB ?

Les opérations CRUD décrivent les conventions d’une interface utilisateur qui permettent aux utilisateurs de visualiser, de rechercher et de modifier des parties de la base de données. MongoDB offre un moyen élégant d’effectuer des opérations CRUD avec le langage de programmation de votre choix grâce à ses pilotes.

Les documents MongoDB sont modifiés en se connectant à un serveur, en interrogeant les documents appropriés, puis en modifiant les propriétés des paramètres avant de renvoyer les données à la base de données pour qu’elles soient mises à jour.

Lorsqu’il s’agit d’opérations CRUD individuelles :

  • L’opération create est utilisée pour insérer de nouveaux documents dans la base de données MongoDB.
  • L’opération lecture est utilisée pour interroger un document dans la base de données.
  • L’opération update est utilisée pour modifier des documents existants dans la base de données.
  • L’opération delete est utilisée pour supprimer des documents de la base de données.

Comment effectuer des opérations CRUD

Maintenant que nous avons défini les opérations CRUD de MongoDB, nous pouvons voir comment effectuer les opérations individuelles et manipuler les documents dans une base de données MongoDB. Passons en revue les processus de création, de lecture, de mise à jour et de suppression de documents, en examinant chaque opération à tour de rôle.

Méthodes MongoDB pour les opérations CRUD

Opération de création

Pour CRUD de MongoDB, si la collection spécifiée n’existe pas, l’opération de création crée la collection au moment de son exécution. Les opérations de création dans MongoDB ciblent une seule collection, et non plusieurs. Les opérations d’insertion dans MongoDB sont atomiques sur un seul niveau de document.

MongoDB propose deux opérations de création différentes que vous pouvez utiliser pour insérer des documents dans une collection :

insertOne()

Comme son nom l’indique, insertOne() vous permet d’insérer un document dans la collection. Pour cet exemple, nous allons travailler avec une collection appelée RecordsDB. Nous pouvons insérer une seule entrée dans notre collection en appelant la méthode insertOne() sur RecordsDB. Nous fournissons ensuite les informations que nous voulons insérer sous la forme de paires clé-valeur, établissant ainsi le schéma.

db.RecordsDB.insertOne({
    name: "Marsh",
    age: "6 years",
    species: "Dog",
    ownerAddress: "380 W. Fir Ave",
    chipped: true
})

Si l’opération de création réussit, un nouveau document est créé. La fonction renverra un objet où « acknowledged » est « vrai » et « InsertId » est l’« ObjectID » récemment créé.

> db.RecordsDB.insertOne({
... name: "Marsh",
... age: "6 years",
... species: "Dog",
... ownerAddress: "380 W. Fir Ave",
... chipped: true
... })
{
        "acknowledged" : true,
        "insertedId" : ObjectId("5fd989674e6b9ceb8665c57d")
}

insertMany()

Il est possible d’insérer plusieurs éléments à la fois en appelant la méthode insertMany() sur la collection souhaitée. Dans ce cas, nous transmettons plusieurs éléments dans notre collection choisie (RecordsDB) et les séparons par des virgules. Entre les parenthèses, nous utilisons des crochets pour indiquer que nous transmettons une liste d’entrées multiples. C’est ce que l’on appelle communément une méthode imbriquée.

db.RecordsDB.insertMany([{
    name: "Marsh",
    age: "6 years",
    species: "Dog",
    ownerAddress: "380 W. Fir Ave",
    chipped: true},
      {name: "Kitana", 
      age: "4 years", 
      species: "Cat", 
      ownerAddress: "521 E. Cortland", 
      chipped: true}])

DB.RecordsDB.InsertMany([{ name: "Marsh", age: "6 years", species: "Dog", 
ownerAddress: "380 W. Fir Ave", chipped: true}, {name: "Kitana", age: "4 years", 
species: "Cat", ownerAddress: "521 E. Cortland", chipped: true}])
{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("5fd98ea9ce6e8850d88270b4"),
                ObjectId("5fd98ea9ce6e8850d88270b5")
        ]
}

Opérations de lecture

Les opérations de lecture permettent de fournir des filtres et des critères de requête spéciaux afin de spécifier les documents que vous souhaitez. La documentation de MongoDB contient plus d’informations sur les filtres de requête disponibles. Les modificateurs de requête peuvent également être utilisés pour modifier le nombre de résultats renvoyés.

MongoDB dispose de deux méthodes pour lire les documents d’une collection :


find()

Pour obtenir tous les documents d’une collection, nous pouvons simplement appliquer la méthode find() sur la collection choisie. L’exécution de la méthode find() sans arguments renvoie tous les enregistrements présents dans la collection.

db.RecordsDB.find()
{ "_id" : ObjectId("5fd98ea9ce6e8850d88270b5"), "name" : "Kitana", "age" : "4 years", "species" : "Cat", "ownerAddress" : "521 E. Cortland", "chipped" : true }
{ "_id" : ObjectId("5fd993a2ce6e8850d88270b7"), "name" : "Marsh", "age" : "6 years", "species" : "Dog", "ownerAddress" : "380 W. Fir Ave", "chipped" : true }
{ "_id" : ObjectId("5fd993f3ce6e8850d88270b8"), "name" : "Loo", "age" : "3 years", "species" : "Dog", "ownerAddress" : "380 W. Fir Ave", "chipped" : true }
{ "_id" : ObjectId("5fd994efce6e8850d88270ba"), "name" : "Kevin", "age" : "8 years", "species" : "Dog", "ownerAddress" : "900 W. Wood Way", "chipped" : true }

Dans le résultat, nous pouvons voir tous les enregistrements présents dans la collection. Notez que chaque enregistrement possède un « ObjectID » attribué mappé à la clé « _id ».

Si vous souhaitez être plus précis lors d’une opération de lecture et trouver une sous-section souhaitée des enregistrements, vous pouvez utiliser les critères de filtrage mentionnés précédemment pour choisir les résultats à renvoyer. L’une des façons les plus courantes de filtrer les résultats est d’effectuer une recherche par valeur.

db.RecordsDB.find({"species":"Cat"})
{ "_id" : ObjectId("5fd98ea9ce6e8850d88270b5"), "name" : "Kitana", "age" : "4 years", "species" : "Cat", "ownerAddress" : "521 E. Cortland", "chipped" : true }

findOne()

Pour obtenir un document qui réponde aux critères de recherche, nous pouvons simplement utiliser la méthode findOne() sur la collection que nous avons choisie. Si plusieurs documents correspondent à la requête, cette méthode renvoie le premier document selon l’ordre naturel qui reflète l’ordre des documents sur le disque. Si aucun document ne répond aux critères de recherche, la fonction renvoie une valeur null. La fonction adopte la forme de syntaxe suivante.

db.{collection}.findOne({query}, {projection})

Prenons la collection suivante, par exemple, RecordsDB.

{ "_id" : ObjectId("5fd98ea9ce6e8850d88270b5"), "name" : "Kitana", "age" : "8 years", "species" : "Cat", "ownerAddress" : "521 E. Cortland", "chipped" : true }
{ "_id" : ObjectId("5fd993a2ce6e8850d88270b7"), "name" : "Marsh", "age" : "6 years", "species" : "Dog", "ownerAddress" : "380 W. Fir Ave", "chipped" : true }
{ "_id" : ObjectId("5fd993f3ce6e8850d88270b8"), "name" : "Loo", "age" : "3 years", "species" : "Dog", "ownerAddress" : "380 W. Fir Ave", "chipped" : true }
{ "_id" : ObjectId("5fd994efce6e8850d88270ba"), "name" : "Kevin", "age" : "8 years", "species" : "Dog", "ownerAddress" : "900 W. Wood Way", "chipped" : true }

Et nous exécutons la ligne de code suivante :

db.RecordsDB.find({"age":"8 years"})

Nous obtiendrions le résultat suivant :

{ "_id" : ObjectId("5fd98ea9ce6e8850d88270b5"), "name" : "Kitana", "age" : "8 years", "species" : "Cat", "ownerAddress" : "521 E. Cortland", "chipped" : true }

Notez que même si deux documents correspondent aux critères de recherche, seul le premier qui correspond à la condition de recherche est renvoyé.

Opérations de mise à jour

Comme les opérations de création, les opérations de mise à jour opèrent sur une seule collection et sont atomiques au niveau d’un seul document. Une opération de mise à jour utilise des filtres et des critères pour sélectionner les documents que vous souhaitez mettre à jour.

Vous devez être prudent lors de la mise à jour de documents, car celles-ci sont permanentes et ne peuvent pas être annulées. Cela vaut également pour les opérations de suppression.

Pour CRUD de MongoDB, il existe trois méthodes différentes de mise à jour des documents :


updateOne()

Nous pouvons mettre à jour un enregistrement existant et modifier un seul document avec une opération de mise à jour. Pour ce faire, nous utilisons la méthode updateOne() sur une collection choisie, ici « RecordsDB ». Pour mettre à jour un document, nous fournissons à la méthode deux arguments : un filtre de mise à jour et une action de mise à jour.

Le filtre de mise à jour définit les éléments à mettre à jour et l’action de mise à jour définit la manière de mettre à jour ces éléments. Nous transmettons d’abord le filtre de mise à jour. Ensuite, nous utilisons la clé « $set » et fournissons les champs que nous souhaitons mettre à jour en tant que valeur. Cette méthode met à jour le premier enregistrement qui correspond au filtre fourni.

db.RecordsDB.updateOne({name: "Marsh"}, {$set:{ownerAddress: "451 W. Coffee St. A204"}})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
{ "_id" : ObjectId("5fd993a2ce6e8850d88270b7"), "name" : "Marsh", "age" : "6 years", "species" : "Dog", "ownerAddress" : "451 W. Coffee St. A204", "chipped" : true }

updateMany()

updateMany() permet de mettre à jour plusieurs éléments en transmettant une liste d’éléments, comme nous l’avons fait pour l’insertion de plusieurs éléments. Cette opération de mise à jour utilise la même syntaxe que pour la mise à jour d’un document unique.

db.RecordsDB.updateMany({species:"Dog"}, {$set : {age : "5"}})
{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 3 }
> db.RecordsDB.find ()
{ "_id" : ObjectId("5fd98ea9ce6e8850d88270b5"), "name" : "Kitana", "age" : "4 years", "species" : "Cat", "ownerAddress" : "521 E. Cortland", "chipped" : true }
{ "_id" : ObjectId("5fd993a2ce6e8850d88270b7"), "name" : "Marsh", "age" : "5", "species" : "Dog", "ownerAddress" : "451 W. Coffee St. A204", "chipped" : true }
{ "_id" : ObjectId("5fd993f3ce6e8850d88270b8"), "name" : "Loo", "age" : "5", "species" : "Dog", "ownerAddress" : "380 W. Fir Ave", "chipped" : true }
{ "_id" : ObjectId("5fd994efce6e8850d88270ba"), "name" : "Kevin", "age" : "5", "species" : "Dog", "ownerAddress" : "900 W. Wood Way", "chipped" : true }

replaceOne()

La méthode replaceOne() remplace un seul document dans la collection spécifiée. La fonction replaceOne()_ remplace le document entier, ce qui signifie que les champs de l’ancien document qui ne sont pas contenus dans le nouveau seront perdus.

db.RecordsDB.replaceOne({name: "Kevin"}, {name: "Maki"})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
> db.RecordsDB.find()
{ "_id" : ObjectId("5fd98ea9ce6e8850d88270b5"), "name" : "Kitana", "age" : "4 years", "species" : "Cat", "ownerAddress" : "521 E. Cortland", "chipped" : true }
{ "_id" : ObjectId("5fd993a2ce6e8850d88270b7"), "name" : "Marsh", "age" : "5", "species" : "Dog", "ownerAddress" : "451 W. Coffee St. A204", "chipped" : true }
{ "_id" : ObjectId("5fd993f3ce6e8850d88270b8"), "name" : "Loo", "age" : "5", "species" : "Dog", "ownerAddress" : "380 W. Fir Ave", "chipped" : true }
{ "_id" : ObjectId("5fd994efce6e8850d88270ba"), "name" : "Maki" }

Opérations de suppression

Les opérations de suppression opèrent sur une seule collection, comme les opérations Update et Create. Elles sont également atomiques pour un seul document. Vous pouvez associer les opérations de suppression à des filtres et des critères pour spécifier les documents à supprimer d’une collection. Les options de filtrage reposent sur la même syntaxe que les opérations de lecture.

MongoDB propose deux méthodes différentes pour supprimer des enregistrements d’une collection :

deleteOne()

deleteOne() supprime un document d’une collection spécifiée sur le serveur MongoDB. Un critère de filtrage est utilisé pour spécifier l’élément à supprimer. Il supprime le premier enregistrement qui correspond au filtre fourni.

 db.RecordsDB.deleteOne({name:"Maki"})
{ "acknowledged" : true, "deletedCount" : 1 }
> db.RecordsDB.find()
{ "_id" : ObjectId("5fd98ea9ce6e8850d88270b5"), "name" : "Kitana", "age" : "4 years", "species" : "Cat", "ownerAddress" : "521 E. Cortland", "chipped" : true }
{ "_id" : ObjectId("5fd993a2ce6e8850d88270b7"), "name" : "Marsh", "age" : "5", "species" : "Dog", "ownerAddress" : "451 W. Coffee St. A204", "chipped" : true }
{ "_id" : ObjectId("5fd993f3ce6e8850d88270b8"), "name" : "Loo", "age" : "5", "species" : "Dog", "ownerAddress" : "380 W. Fir Ave", "chipped" : true }

deleteMany()

deleteMany() est une méthode utilisée pour supprimer plusieurs documents d’une collection souhaitée en une seule opération de suppression. Une liste est transmise à la méthode et les éléments individuels sont définis avec des critères de filtrage comme dans deleteOne().

db.RecordsDB.deleteMany({species:"Dog"})
{ "acknowledged" : true, "deletedCount" : 2 }
> db.RecordsDB.find()
{ "_id" : ObjectId("5fd98ea9ce6e8850d88270b5"), "name" : "Kitana", "age" : "4 years", "species" : "Cat", "ownerAddress" : "521 E. Cortland", "chipped" : true }

Performances CRUD en termes relationnels et non relationnels

Les bases de données NoSQL sont mieux optimisées pour les opérations de création et de lecture et offrent une plus grande évolutivité. Elles sont donc bien adaptées à des charges plus élevées (davantage d’opérations CRUD sont traitées). Elles sont également flexibles en termes de stockage d’informations.

Une expérience détaillée menée par ResearchGate sur les opérations CRUD réalisées avec différents types de bases de données NoSQL et SQL a conclu que les bases de données NoSQL étaient nettement plus performantes que les bases de données SQL pour toutes les opérations CRUD, en particulier lorsque le nombre d’opérations était élevé. Par exemple, MongoDB a excellé dans la récupération de données (opérations de lecture), avec un temps de performance moyen de 43,5 ms pour 100 000 opérations de lecture (recherche/sélection). MongoDB a également l’avantage de fournir des mises à jour atomiques (au niveau des champs), ce qui prend plus de temps avec toute autre base de données orientée documents.

Résumé

Cet article décrit les informations de base concernant CRUD et donne quelques exemples de la manière dont les opérations CRUD sont effectuées dans MongoDB. MongoDB Atlas offre un moyen simple d’effectuer des opérations CRUD en utilisant l’UI. Vous pouvez consulter le manuel MongoDB pour en savoir plus sur les concepts CRUD de MongoDB afin de développer des applications hautement performantes et évolutives.

FAQ

Quels sont les principes du CRUD ?

L’acronyme CRUD désigne les quatre opérations de base que toute application doit pouvoir effectuer, à savoir les opérations de création, de lecture, de mise à jour et de suppression. Cela signifie qu’une application doit pouvoir insérer des données dans la base de données, lire des données de la base de données, mettre à jour les détails de la base de données et supprimer des données de la base de données selon les besoins.

Qu’est-ce qu’une application CRUD ?

Une application CRUD repose sur des opérations CRUD pour toutes les transactions et opérations. Elle comporte une interface utilisateur (front-end), un contrôleur ou une API, et une base de données qui traite les opérations CRUD.

Que sont les opérations CRUD ?

Les opérations CRUD sont les fonctions de base que chaque application doit exécuter pour échanger des données avec un utilisateur Web, par exemple, créer un nouveau profil d’utilisateur (CREATE), récupérer les détails d’un produit dans une base de données (READ), mettre à jour les informations relatives à un employé sur le portail des employés (UPDATE) et supprimer un produit particulier d’un catalogue (DELETE).

Qu’est-ce que CRUD ?

CRUD est un acronyme qui représente l’ensemble des opérations de base que chaque application doit être capable d’effectuer. Il signifie créer, lire, mettre à jour et supprimer.

Prêt à démarrer?

Lancez un nouveau cluster ou migrez vers MongoDB Atlas sans interruption de service.