Supprimer des données MongoDB

MongoDBBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez comment supprimer efficacement des données dans une base de données MongoDB. Vous commencerez par supprimer un seul document, puis explorerez des techniques pour effectuer des suppressions en masse et supprimer des données basées sur des conditions spécifiques. Enfin, vous apprendrez comment vider une collection entière et vérifier les résultats de la suppression. Ces compétences sont essentielles pour gérer votre base de données MongoDB et maintenir l'intégrité des données.

Le laboratoire couvre les sujets suivants : suppression d'un seul document avec deleteOne(), suppression de plusieurs documents avec deleteMany(), utilisation d'opérateurs de requête pour la suppression conditionnelle, et vidage d'une collection avec deleteMany({}) ou drop(). À la fin de ce laboratoire, vous aurez une solide compréhension de la manière de supprimer des données dans MongoDB en utilisant diverses méthodes.

Supprimer un document unique

Dans cette étape, vous apprendrez comment supprimer un seul document d'une collection MongoDB. Tout d'abord, vous devez vous connecter au shell MongoDB et préparer des données d'exemple.

Lancez le shell MongoDB en exécutant la commande suivante dans votre terminal :

mongosh

Une fois dans le shell, vous créerez une nouvelle base de données et une collection avec quelques documents.

use mylab_database

Créez une nouvelle collection avec quelques documents.

db.users.insertMany([
  { name: "John Doe", age: 30, email: "john@example.com" },
  { name: "Jane Smith", age: 25, email: "jane@example.com" },
  { name: "Bob Johnson", age: 35, email: "bob@example.com" }
]);

La sortie confirme que trois documents ont été insérés.

{
  "acknowledged": true,
  "insertedIds": {
    "0": ObjectId("..."),
    "1": ObjectId("..."),
    "2": ObjectId("...")
  }
}

Maintenant, pour supprimer un seul document, utilisez la méthode deleteOne(). Cette méthode trouve le premier document qui correspond au filtre spécifié et le supprime. Supprimons le document de "Jane Smith".

db.users.deleteOne({ name: "Jane Smith" });

La sortie indique qu'un document a été supprimé avec succès.

{ "acknowledged": true, "deletedCount": 1 }
  • deleteOne() : Cette méthode supprime uniquement le premier document qui correspond aux critères du filtre.
  • { name: "Jane Smith" } : C'est le filtre qui spécifie quel document supprimer.
  • deletedCount: 1 : Ceci confirme qu'un document a été supprimé.

Pour vérifier que le document a été supprimé, vous pouvez lister tous les documents restants dans la collection users.

db.users.find();

La sortie affichera désormais seulement deux documents, confirmant que "Jane Smith" a été supprimé.

Supprimer plusieurs documents

Dans l'étape précédente, vous avez supprimé un seul document. Maintenant, vous allez apprendre comment supprimer plusieurs documents à la fois en utilisant la méthode deleteMany(). Ceci est utile pour les opérations de suppression en masse, comme le nettoyage des enregistrements ayant un statut spécifique.

Tout d'abord, ajoutons quelques nouveaux documents à notre collection users. Ces documents auront un champ status, que nous utiliserons pour notre opération de suppression en masse.

db.users.insertMany([
  { name: "Alice Wilson", age: 28, status: "inactive" },
  { name: "Charlie Brown", age: 40, status: "inactive" },
  { name: "David Lee", age: 35, status: "active" },
  { name: "Eve Taylor", age: 45, status: "inactive" }
]);

La sortie confirmera l'insertion de quatre nouveaux documents.

{
  "acknowledged": true,
  "insertedIds": {
    "0": ObjectId("..."),
    "1": ObjectId("..."),
    "2": ObjectId("..."),
    "3": ObjectId("...")
  }
}

Maintenant, utilisez la méthode deleteMany() pour supprimer tous les utilisateurs dont le statut est "inactive".

db.users.deleteMany({ status: "inactive" });

La sortie indique que trois documents ont été supprimés.

{ "acknowledged": true, "deletedCount": 3 }
  • deleteMany() : Cette méthode supprime tous les documents qui correspondent aux critères du filtre.
  • { status: "inactive" } : Ce filtre cible tous les documents où le champ status est "inactive".

Pour confirmer la suppression en masse, listez tous les documents restants dans la collection.

db.users.find();

La sortie affichera uniquement les documents qui n'étaient pas "inactive", démontrant que la suppression en masse a réussi.

Supprimer des documents selon des conditions

MongoDB vous permet d'utiliser de puissants opérateurs de requête pour supprimer des documents basés sur des conditions plus complexes. Dans cette étape, vous apprendrez à utiliser des opérateurs tels que $gt (supérieur à) et $lt (inférieur à) pour effectuer des suppressions conditionnelles.

Tout d'abord, créons une nouvelle collection nommée employees avec quelques données d'exemple.

db.employees.insertMany([
  { name: "John Doe", age: 25, department: "Sales", salary: 50000 },
  { name: "Jane Smith", age: 35, department: "Marketing", salary: 60000 },
  { name: "Bob Johnson", age: 45, department: "Sales", salary: 55000 },
  { name: "Alice Brown", age: 30, department: "HR", salary: 52000 }
]);

La sortie confirmera l'insertion de quatre documents.

{
  "acknowledged": true,
  "insertedIds": {
    "0": ObjectId("..."),
    "1": ObjectId("..."),
    "2": ObjectId("..."),
    "3": ObjectId("...")
  }
}

Maintenant, effectuons une suppression conditionnelle. Nous allons supprimer tous les employés âgés de plus de 40 ans.

db.employees.deleteMany({ age: { $gt: 40 } });

La sortie indique qu'un document a été supprimé.

{ "acknowledged": true, "deletedCount": 1 }
  • { age: { $gt: 40 } } : Ce filtre utilise l'opérateur $gt pour sélectionner les documents où le champ age est supérieur à 40.

Ensuite, effectuons une suppression basée sur plusieurs conditions. Nous allons supprimer les employés du département "Sales" dont le salaire est inférieur à 55 000.

db.employees.deleteMany({
  department: "Sales",
  salary: { $lt: 55000 }
});

La sortie confirme qu'un autre document a été supprimé.

{ "acknowledged": true, "deletedCount": 1 }
  • Cette commande combine deux conditions : le department doit être "Sales" et le salary doit être inférieur à 55 000 (en utilisant l'opérateur $lt).

Pour vérifier les résultats, affichez les documents restants dans la collection employees.

db.employees.find();

La sortie affichera uniquement les deux employés qui ne répondaient pas aux critères de suppression.

Vider toutes les données d'une collection

Parfois, vous devrez peut-être supprimer tous les documents d'une collection. MongoDB propose deux méthodes principales pour y parvenir : utiliser deleteMany({}) pour supprimer tous les documents, ou utiliser drop() pour supprimer la collection entière.

Tout d'abord, créons une nouvelle collection products avec quelques données d'exemple.

db.products.insertMany([
  { name: "Laptop", price: 1000, category: "Electronics" },
  { name: "Smartphone", price: 500, category: "Electronics" },
  { name: "Headphones", price: 100, category: "Electronics" }
]);

Méthode 1 : Supprimer tous les documents avec deleteMany()

Vous pouvez supprimer tous les documents d'une collection en passant un filtre vide {} à la méthode deleteMany(). Cette approche supprime les données mais conserve la collection elle-même, y compris ses index.

db.products.deleteMany({});

La sortie indique que les trois documents ont été supprimés.

{ "acknowledged": true, "deletedCount": 3 }

Vous pouvez vérifier que la collection est maintenant vide en exécutant une requête find().

db.products.find();

Cette commande ne retournera aucun document.

Méthode 2 : Supprimer la collection entière avec drop()

La méthode drop() est plus destructrice. Elle supprime complètement la collection, y compris tous ses documents, ses index et ses métadonnées associées.

Tout d'abord, réinsérons les données d'exemple afin d'avoir une collection à supprimer.

db.products.insertMany([
  { name: "Laptop", price: 1000, category: "Electronics" },
  { name: "Smartphone", price: 500, category: "Electronics" },
  { name: "Headphones", price: 100, category: "Electronics" }
]);

Maintenant, supprimons entièrement la collection products.

db.products.drop();

La sortie true confirme que la collection a été supprimée avec succès.

true

Si vous essayez maintenant d'interroger la collection products, elle ne retournera aucun résultat car la collection n'existe plus.

db.products.find();

Cette commande ne produira aucune sortie, car la collection a disparu. Pour quitter le shell mongosh, vous pouvez taper exit ou appuyer sur Ctrl+D.

Résumé

Dans ce laboratoire, vous avez appris les techniques fondamentales pour supprimer des données dans MongoDB. Vous avez commencé par utiliser la méthode deleteOne() pour supprimer un seul document basé sur un filtre spécifique. Vous êtes ensuite passé aux suppressions en masse avec deleteMany(), qui supprime efficacement plusieurs documents correspondant à un critère. Vous avez également exploré comment utiliser des opérateurs de requête tels que $gt et $lt pour effectuer des suppressions conditionnelles plus complexes. Enfin, vous avez appris deux méthodes pour vider une collection : utiliser deleteMany({}) pour supprimer tous les documents tout en conservant la structure de la collection, et utiliser drop() pour supprimer définitivement la collection entière.

Ces compétences sont cruciales pour l'administration de bases de données, vous permettant de gérer le cycle de vie des données, de nettoyer les enregistrements inutiles et de maintenir la santé globale de votre base de données MongoDB.