Différence entre deleteMany() et Remove() dans MongoDB

Shihab Sikder 30 janvier 2023
  1. Paramètre et retours de deleteMany() dans MongoDB
  2. Paramètre et retours de remove() dans MongoDB
Différence entre deleteMany() et Remove() dans MongoDB

deleteMany() et remove() sont tous deux utilisés pour supprimer une entrée de MongoDB. Dans la version récente, remove est marqué comme obsolète.

MongoDB suggère plutôt d’utiliser deleteMany et deleteOne. La commande deleteMany peut accepter un paramètre à faire correspondre avant de supprimer.

Paramètre et retours de deleteMany() dans MongoDB

Cette méthode vient du mongosh. Généralement, il est utilisé dans la collection pour supprimer les documents d’une collection spécifique.

Voici comment il est utilisé.

db.collection.deleteMany(
    <FILTER>,{
        writeConcern: <document>,
        collation: <document>
    }
)

Le <FILTER> signifie que nous pouvons utiliser notre champ de recherche personnalisé. Disons que nous voulons supprimer tous les produits dont le prix est égal à 30.

Alors le code sera :

db.collection.deleteMany({
    price:30
})

Nous pouvons mettre l’autre paramètre vide ici. Si vous souhaitez supprimer la collection complète, insérez {} dans le deleteMany.

En savoir plus sur writeConcern et collation.

Paramètre Taper La description
writeConcern Document C’est un paramètre facultatif. Il met la reconnaissance pour le document. Pour en savoir plus sur writeConcern, visitez ce blog.
collation Document Il permet à l’utilisateur d’utiliser des règles spécifiques à la langue pour le document. Le classement est un paramètre facultatif. Si vous l’utilisez, vous devez utiliser le champ local. En savoir plus sur la collation.

deleteMany() renvoie acknowledged comme true si la fonction s’exécute avec le paramètre writeConcern ; sinon, false. Il renvoie également le deleteCount, qui fait référence au nombre de documents supprimés.

deleteMany supprime tous les documents qui correspondent au filtre.

Un exemple de retour peut ressembler à ce qui suit.

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

Paramètre et retours de remove() dans MongoDB

La méthode remove() a deux fonctionnalités. Il peut également agir comme deleteMany et deleteOne.

Le code du modèle pour le remove() est ici.

db.collection.remove(
   <query>,
   <justOne>
)

Généralement, ces deux paramètres sont utilisés. En outre, vous pouvez étendre cela aux éléments suivants.

db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>,
     collation: <document>
   }
)

Le writeConcern et le collation sont les mêmes que ceux que nous avons discutés ci-dessus pour le deleteMany(). Ici, nous pouvons utiliser la query à la place d’un filtre.

Pour en savoir plus sur la query dans MongoDB, vous pouvez visiter le lien suivant.

Si nous passons un objet vide dans la méthode remove, cela supprimera tous les documents de la collection. Par exemple, supposons que vous ayez une collection product et que vous souhaitiez supprimer tous les produits dont le prix est inférieur à 5.

La commande sera alors :

db.products.remove(
    {price:{ $lt: 5}}
)

Si nous mettons cette commande, le paramètre justOne sera par défaut false. Maintenant, si vous souhaitez supprimer un seul élément pour la même requête, la commande ressemblera à la suivante.

db.products.remove(
    {price:{ $lt: 5}}, true
)

Cette méthode renvoie un objet appelé WriteResult, qui a les paramètres suivants.

WriteResult({ "nRemoved" : 10 })

Il a aussi writeError et writeConcern ; ceux-ci sont liés à writeConcern ci-dessus.

Le remove() est obsolète dans la dernière version de MongoDB. Ainsi, lors du développement de l’application NodeJS, vous ne devez utiliser que deleteOne ou deleteMany.

Pour en savoir plus sur remove(), visitez les sites Web suivants.

Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website