DeleteOne ,DeleteMany

ces fonctions permettent de supprimer un ou plusieurs documents

deleteOne()

Permet de supprimer le premier document trouvés dans la collection selon la condition fournie
Supprimer le premier produits de la categorie categorieA
db.produits.deleteOne({"categories.nom":"categorieA"})

Remarque

Pour condition "categories.nom" :
deleteOne va chercher dans le tableau categories un objet qui a nom="categorieA" puis il va supprimer le document trouvé
Supprimer le premier produits du fournisseur nom=fournisseur1
db.produits.deleteOne({"fournisseur.nom":"fournisseur1"})

Remarque

Pour condition "fournisseur.nom" :
deleteOne va supprimer le document qui un founisseur avec nom="fournisseur1"
Supprimer le produit qui _id=2
db.produits.deleteOne({"_id":2})

DeleteMany()

Permet de supprimer tout les documents trouvé selon la conditons fournie
Suppprimer tout les produits de la marque MarqueA
db.produits.deleteMany({"marque":"MarqueA"})

Suppprimer les produits qui apparient au "categorie1" ou "categorie2"
db.produits.deleteMany({"categories.nom":{$in:["categorie1","categorie2"]})

Remarque

categories.nom va retourner un tableau contenant des objet avec un attribut nom:
 categories: [
    {
      nom: 'Low Cost'
    },
    {
      nom: 'exprensive Cost'
    },
    {
      nom: 'Meduim Cost'
    },
    {
      nom: 'hight Cost'
    }
  ]
  


Suppprimer les produits qui ont toutes les sizes >100
db.produits.deleteMany({"sizes":{$gt:100}})

Remarque

"sizes" est un tableau des valeurs de type primitives integer , ou string ,
Lorsque on met dans la condition {"sizes":{$gt:100}}
la fonction deleteMany() va chercher tout les documents qui ont toutes les valeurs du tablea sizes>100

Remarque

On peut utiliser aussi la méthode remove() de la meme façon que deleteMany()
Exemples
  • QSupprimez un produit ayant un nom spécifique.
    db.produits.deleteOne({ nom: 'produit1' });
  • Q Supprimez tous les produits ayant un prix supérieur à 70.
    db.produits.deleteMany({ prix: { $gt: 70 } });
  • Q Supprimez tous les produits dont la quantité est inférieure à 10.
    db.produits.deleteMany({ quantite: { $lt: 10 } });
  • Q Supprimez tous les produits appartenant à la catégorie 'category1'.
    db.produits.deleteMany({ "category.nom": "category1" });
  • Q Supprimez tous les produits de la marque 'marqueB'.
    db.produits.deleteMany({ marque: 'marqueB' });
  • Q Supprimez tous les produits qui sont en promotion en septembre.
    db.produits.deleteMany({ moisPromotion: 'septembre' });
  • Q Supprimez tous les produits fournis par un fournisseur avec un nom spécifique.
    db.produits.deleteMany({ "fournisseur.nom": 'fournisseur5' });
  • Q Supprimez tous les produits ayant une taille spécifique, par exemple 200.
    db.produits.deleteMany({ sizes: 200 });
  • Q Supprimez tous les produits dont la quantité est supérieure à 20 et dont le prix est inférieur à 50.
    db.produits.deleteMany({ $and: [{ quantite: { $gt: 20 } }, { prix: { $lt: 50 } }] });
  • Q Supprimez tous les produits qui sont en promotion en septembre et juin.
    db.produits.deleteMany({ moisPromotion: { $all: ['septembre', 'juin'] } });
  • Q Supprimez tous les produits ayant une catégorie dont la description contient le mot 'description'.
    db.produits.deleteMany({ "category.description": { $regex: /description/ } });
  • Q Supprimez tous les produits dont la marque est différente de 'marqueA'.
    db.produits.deleteMany({ marque: { $ne: 'marqueA' } });
  • Q Supprimez tous les produits dont la quantité est égale à 45 et qui sont en promotion en septembre.
    db.produits.deleteMany({ $and: [{ quantite: 45 }, { moisPromotion: 'septembre' }] });
  • Q Supprimez un produit ayant un prix de 65.2.
    db.produits.deleteOne({ prix: 65.2 });
  • Q Supprimez tous les produits dont la catégorie contient 'category2' ou 'category3'.
    db.produits.deleteMany({ "category.nom": { $in: ['category2', 'category3'] } });
  • Q Supprimez tous les produits dont la quantité est inférieure à 30 et qui sont en promotion en juillet.
    db.produits.deleteMany({ $and: [{ quantite: { $lt: 30 } }, { moisPromotion: 'juillet' }] });
  • Q Supprimez tous les produits fournis par un fournisseur avec un numéro de téléphone spécifique.
    db.produits.deleteMany({ "fournisseur.tel": '0315455' });
  • Q Supprimez tous les produits dont la taille est différente de 200.
    db.produits.deleteMany({ sizes: { $ne: 200 } });
  • Q Supprimez tous les produits dont la quantité est supérieure ou égale à 40 et le prix est supérieur à 60.
    db.produits.deleteMany({ $and: [{ quantite: { $gte: 40 }, prix: { $gt: 60 } }] });
  • Q Supprimez tous les produits qui sont en promotion en septembre ou juin.
    db.produits.deleteMany({ $or: [{ moisPromotion: 'septembre' }, { moisPromotion: 'juin' }] });
  • Q Supprimez tous les produits dont la catégorie a une description ne contenant pas le mot 'description'.
    db.produits.deleteMany({ "category.description": { $not: /description/ } });
  • Q Supprimez tous les produits dont la marque est 'marqueA' ou 'marqueC'.
    db.produits.deleteMany({ marque: { $in: ['marqueA', 'marqueC'] });
  • Q Supprimez tous les produits dont la quantité est inférieure ou égale à 5 et qui sont en promotion en juillet.
    db.produits.deleteMany({ $and: [{ quantite: { $lte: 5 }, moisPromotion: 'juillet' }] });
  • Q Supprimez tous les produits fournis par un fournisseur avec un nom différent de 'fournisseur5'.
    db.produits.deleteMany({ "fournisseur.nom": { $ne: 'fournisseur5' } });
  • Q Supprimez tous les produits dont la taille est égale à 200 en utilisant une opération d'agrégation.
    db.produits.aggregate([{ $unwind: "$sizes" }, { $match: { sizes: 200 } }, { $group: { _id: "$_id" } }, { $out: "produitsToDelete" }]);
    db.produitsToDelete.find().forEach(function(doc) { db.produits.deleteOne({ _id: doc._id });
  • Q });
  • Q Supprimez tous les produits dont la catégorie contient une description vide.
    db.produits.deleteMany({ "category.description": "" });
  • Q Supprimez tous les produits dont la marque est 'marqueB' et qui ne sont pas en promotion en septembre.
    db.produits.deleteMany({ marque: 'marqueB', moisPromotion: { $ne: 'septembre' } });
  • Q Supprimez tous les produits dont la quantité est supérieure ou égale à 50 et le prix est supérieur ou égal à 80.
    db.produits.deleteMany({ $and: [{ quantite: { $gte: 50 }, prix: { $gte: 80 } }] });
  • Q Supprimez tous les produits ayant une catégorie avec une description contenant le mot 'une'.
    db.produits.deleteMany({ "category.description": { $regex: /une/ } });
  • Q Supprimez tous les produits dont la marque n'est ni 'marqueA' ni 'marqueB'.
    db.produits.deleteMany({ marque: { $nin: ['marqueA', 'marqueB'] });
  • Q Supprimez tous les produits ayant une taille de 200 en utilisant une opération d'agrégation.
    db.produits.aggregate([{ $match: { sizes: 200 } }, { $group: { _id: "$_id" } }, { $out: "produitsToDelete" });
  • Q db.produitsToDelete.find().forEach(function(doc) { db.produits.deleteOne({ _id: doc._id });
  • Q });
  • Q Supprimez tous les produits dont la quantité est égale à 45 et la marque est 'marqueB'.
    db.produits.deleteMany({ quantite: 45, marque: 'marqueB' });
  • Q Supprimez tous les produits qui sont en promotion en septembre ou juin et ont une quantité inférieure à 30.
    db.produits.deleteMany({ $and: [{ moisPromotion: { $in: ['septembre', 'juin'] }, quantite: { $lt: 30 } }] });
  • Q Supprimez tous les produits dont le nom commence par 'produit'.
    db.produits.deleteMany({ nom: { $regex: /^produit/ } });
  • Q Supprimez tous les produits ayant une taille différente de 200 en utilisant une opération d'agrégation.
    db.produits.aggregate([{ $unwind: "$sizes" }, { $match: { sizes: { $ne: 200 } } }, { $group: { _id: "$_id" } }, { $out: "produitsToDelete" });
  • Q db.produitsToDelete.find().forEach(function(doc) { db.produits.deleteOne({ _id: doc._id });
  • Q });
  • Q Supprimez tous les produits dont la quantité est supérieure ou égale à 40 et le mois de promotion est différent de 'juillet'.
    db.produits.deleteMany({ $and: [{ quantite: { $gte: 40 }, moisPromotion: { $ne: 'juillet' } }] });
  • Q Supprimez tous les produits dont la catégorie contient une description avec plus de 20 caractères.
    db.produits.deleteMany({ "category.description": { $regex: /.{21,}/ } });
  • Q Supprimez tous les produits dont le prix est inférieur à 40 ou le mois de promotion est 'juillet'.
    db.produits.deleteMany({ $or: [{ prix: { $lt: 40 }, moisPromotion: 'juillet' }] });
  • Q Supprimez tous les produits dont la quantité est inférieure à 15 et la catégorie contient 'category1'.
    db.produits.deleteMany({ $and: [{ quantite: { $lt: 15 }, "category.nom": "category1" }] });
  • Q Supprimez tous les produits dont la marque est 'marqueB' et qui sont en promotion en septembre ou juin.
    db.produits.deleteMany({ marque: 'marqueB', moisPromotion: { $in: ['septembre', 'juin'] } });
  • Q Supprimez un produit dont la marque est 'marqueC' et le mois de promotion est 'juillet'.
    db.produits.deleteOne({ marque: 'marqueC', moisPromotion: 'juillet' });
  • Q Supprimez tous les produits dont la quantité est inférieure ou égale à 5 et le prix est supérieur ou égal à 100.
    db.produits.deleteMany({ $and: [{ quantite: { $lte: 5 }, prix: { $gte: 100 } }] });
  • Q Supprimez tous les produits dont la catégorie est 'category2' et la quantité est supérieure ou égale à 40.
    db.produits.deleteMany({ "category.nom": 'category2', quantite: { $gte: 40 } });
  • Q Supprimez tous les produits dont la marque est différente de 'marqueD' et la catégorie contient 'category1'.
    db.produits.deleteMany({ marque: { $ne: 'marqueD' }, "category.nom": 'category1' });
  • Q Supprimez tous les produits dont la quantité est inférieure à 10 et la catégorie est 'category1' ou 'category2'.
    db.produits.deleteMany({ $and: [{ quantite: { $lt: 10 }, "category.nom": { $in: ['category1', 'category2'] }] });
  • Q Supprimez tous les produits dont la taille est différente de 200 en utilisant une opération d'agrégation.
    db.produits.aggregate([{ $unwind: "$sizes" }, { $match: { sizes: { $ne: 200 } } }, { $group: { _id: "$_id" } }, { $out: "produitsToDelete" });
  • Q db.produitsToDelete.find().forEach(function(doc) { db.produits.deleteOne({ _id: doc._id });
  • Q });
  • Q Supprimez tous les produits dont le prix est inférieur à 60 et la quantité est supérieure à 30.
    db.produits.deleteMany({ $and: [{ prix: { $lt: 60 }, quantite: { $gt: 30 } }] });
  • Q Supprimez tous les produits dont la marque est 'marqueE' et qui sont en promotion en septembre, juin ou juillet.
    db.produits.deleteMany({ marque: 'marqueE', moisPromotion: { $in: ['septembre', 'juin', 'juillet'] } });
  • Q Supprimez tous les produits dont la catégorie contient 'category1' et la description de la catégorie contient 'une description'.
    db.produits.deleteMany({ "category.nom": 'category1', "category.description": { $regex: /une description/ } });
  • Q Supprimez tous les produits dont la quantité est inférieure à 20 et le prix est supérieur à 70 en utilisant une opération d'agrégation.
    db.produits.aggregate([{ $match: { $and: [{ quantite: { $lt: 20 }, prix: { $gt: 70 } }] } }, { $group: { _id: "$_id" } }, { $out: "produitsToDelete" });
  • Q db.produitsToDelete.find().forEach(function(doc) { db.produits.deleteOne({ _id: doc._id });
  • Q });
  • Q Supprimez tous les produits dont le mois de promotion n'est pas 'juillet' ou 'août'.
    db.produits.deleteMany({ moisPromotion: { $nin: ['juillet', 'août'] } });
  • Q Supprimez tous les produits dont la quantité est égale à 45 et la catégorie est 'category1' ou 'category2'.
    db.produits.deleteMany({ $and: [{ quantite: 45 }, "category.nom": { $in: ['category1', 'category2'] }] });
  • Q Supprimez tous les produits dont la marque est 'marqueF' ou 'marqueG' et la quantité est supérieure ou égale à 40.
    db.produits.deleteMany({ $or: [{ marque: { $in: ['marqueF', 'marqueG'] }, quantite: { $gte: 40 } }] });
  • Q Supprimez tous les produits dont le nom contient la lettre 't' en utilisant une expression régulière.
    db.produits.deleteMany({ nom: { $regex: /t/ } });
  • Q Supprimez tous les produits ayant une taille différente de 200 et un prix inférieur à 50 en utilisant une opération d'agrégation.
    db.produits.aggregate([{ $unwind: "$sizes" }, { $match: { sizes: { $ne: 200 }, prix: { $lt: 50 } } }, { $group: { _id: "$_id" } }, { $out: "produitsToDelete" });
  • Q db.produitsToDelete.find().forEach(function(doc) { db.produits.deleteOne({ _id: doc._id });
  • Q });
  • Q Supprimez tous les produits dont la quantité est supérieure à 10 et le mois de promotion est 'juin' ou 'juillet'.
    db.produits.deleteMany({ $and: [{ quantite: { $gt: 10 }, moisPromotion: { $in: ['juin', 'juillet'] }] });
  • Q Supprimez tous les produits dont la catégorie contient 'category1' et la description de la catégorie ne contient pas 'une description'.
    db.produits.deleteMany({ "category.nom": 'category1', "category.description": { $not: /une description/ } });
  • Q Supprimez tous les produits dont la marque n'est pas 'marqueA' et la quantité est inférieure à 20.
    db.produits.deleteMany({ $and: [{ marque: { $ne: 'marqueA' }, quantite: { $lt: 20 } }] });
  • Q Supprimez tous les produits dont la quantité est inférieure à 5 et la catégorie est différente de 'category3'.
    db.produits.deleteMany({ $and: [{ quantite: { $lt: 5 }, "category.nom": { $ne: 'category3' }] });
  • Q Supprimez tous les produits dont la catégorie est 'category2' et le prix est supérieur à 70 en utilisant une opération d'agrégation.
    db.produits.aggregate([{ $match: { "category.nom": 'category2', prix: { $gt: 70 } } }, { $group: { _id: "$_id" } }, { $out: "produitsToDelete" });
  • Q db.produitsToDelete.find().forEach(function(doc) { db.produits.deleteOne({ _id: doc._id });