Aller au contenu

Manipulation efficace des opérations CRUD#

Insertions#

Insertion de documents individuels et multiples#

  • Utiliser insertOne() pour insérer un document individuel
  • Utiliser insertMany() pour insérer plusieurs documents à la fois
  • Exemple : db.collection.insertOne({ field1: "value1", field2: "value2" })

Meilleures pratiques pour l'insertion de données#

  • Valider les données avant l'insertion
  • Utiliser des identifiants uniques et significatifs pour le champ _id
  • Insérer des documents de taille similaire pour éviter la fragmentation

Requêtes#

Utilisation d'opérateurs avancés de requête#

  • $gt, $gte, $lt, $lte pour les comparaisons numériques
  • $in, $nin pour vérifier si un champ est dans une liste de valeurs
  • $regex pour les expressions régulières
  • Exemple : db.collection.find({ age: { $gte: 18, $lt: 65 } })

Filtrage, tri et pagination des résultats#

  • Utiliser find() pour filtrer les documents
  • Utiliser sort() pour trier les résultats (1 pour croissant, -1 pour décroissant)
  • Utiliser skip() et limit() pour la pagination
  • Exemple : db.collection.find({}).sort({ age: 1 }).skip(10).limit(10)

Projection de champs#

  • Utiliser la projection pour limiter les champs renvoyés
  • Valeur 1 pour inclure un champ, 0 pour l'exclure
  • Exemple : db.collection.find({}, { field1: 1, field2: 0 })

Mises à jour#

Mise à jour de documents individuels et multiples#

  • Utiliser updateOne() pour mettre à jour un document individuel
  • Utiliser updateMany() pour mettre à jour plusieurs documents à la fois
  • Exemple : db.collection.updateOne({ _id: id }, { $set: { field1: "newValue" } })

Utilisation d'opérateurs de mise à jour avancés#

  • $set, $unset pour ajouter ou supprimer des champs
  • $inc, $mul, $min, $max pour modifier les valeurs numériques
  • $push, $pop, $addToSet, $pull pour manipuler des tableaux
  • Exemple : db.collection.updateOne({ _id: id }, { $inc: { counter: 1 } })

Mises à jour atomiques#

  • Utiliser findAndModify() pour effectuer une mise à jour atomique
  • Les opérations sont effectuées en une seule étape, sans risque de conflits
  • Exemple : db.collection.findAndModify({ query: { _id: id }, update: { $set: { field1: "newValue" } } })

Suppressions#

Suppression de documents individuels et multiples#

  • Utiliser deleteOne() pour supprimer un document individuel
  • Utiliser deleteMany() pour supprimer plusieurs documents à la fois
  • Exemple : db.collection.deleteOne({ _id: id })

Meilleures pratiques pour la suppression de données#

  • Supprimer les données en fonction des besoins métier (date d'expiration, archivage, etc.)
  • Utiliser des index pour accélérer les suppressions
  • Planifier les suppressions pendant les périodes de faible charge pour minimiser l'impact sur les performances
  • Utiliser les index TTL (Time-To-Live) pour supprimer automatiquement les documents après un certain temps