MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

4 façons de supprimer un document dans MongoDB

Dans MongoDB, si vous avez besoin de supprimer un document dans le shell mongo, vous pouvez utiliser :

  • Le db.collection.remove() méthode
  • Le delete commande
  • Le db.collection.deleteOne() méthode
  • Le db.collection.deleteMany() méthode

Cet article fournit des exemples de chacun.

Le db.collection.remove() Méthode

Le db.collection.remove() La méthode supprime (c'est-à-dire supprime) les documents d'une collection. Vous pouvez supprimer tous les documents, certains documents ou un seul document selon vos besoins.

Voici un exemple de suppression d'un document spécifique.

db.employees.remove({ "_id": 3 })

Résultat :

WriteResult({ "nRemoved" : 1 })

Cela supprime le document avec un _id valeur de 3 des employees collecte.

Il ne doit pas nécessairement correspondre à un seul document. Les critères de filtre peuvent correspondre à plusieurs documents, et vous pouvez même laisser les critères de filtre vides pour correspondre à tous les documents (c'est-à-dire supprimer tous les documents).

Voici un exemple de suppression de tous les documents :

db.employees.remove({})

Résultat :

WriteResult({ "nRemoved" : 5 })

Le résultat nous montre que cinq documents ont été supprimés (donc la collection contenait évidemment cinq documents avant que nous ne les supprimions tous).

Le remove() la méthode accepte également un justOne paramètre pour limiter la suppression à un seul document. Cela supprime le premier document qui correspond aux critères de suppression.

Exemple :

db.employees.remove({}, "justOne: true")

Résultat :

WriteResult({ "nRemoved" : 1 })

Dans ce cas, notre critère de filtre est un document vide, et il correspond donc à tous les documents de la collection. Cependant, un seul document est supprimé, car nous utilisons justOne: true .

Le delete Commande

Le delete La commande fait exactement la même chose que la commande remove() méthode. En fait, le remove() méthode utilise la commande delete.

Voici un exemple de suppression d'un document spécifique avec le delete commande.

db.runCommand(
   {
      delete: "employees",
      deletes: [ { q: { _id: 4 }, limit: 1 } ]
   }
)

Résultat :

{ "n" : 1, "ok" : 1 }

Le db.collection.deleteOne() Méthode

Le db.collection.deleteOne() méthode est similaire à db.collection.remove() méthode, sauf qu'elle supprime un seul document de la collection spécifiée.

Il accepte une condition de filtre, tout comme db.collection.remove() .

Exemple :

db.employees.deleteOne({ "_id": 4 })

Résultat :

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

Cela a supprimé le numéro d'employé 4.

Si vous fournissez un filtre plus large qui renvoie plusieurs documents, il ne supprime que le premier.

Par exemple, ce qui suit supprime le premier document de la collection, quel que soit le nombre de documents dans la collection :

db.employees.deleteOne({})

Le db.collection.deleteOne() peut être une méthode pratique à utiliser si vous craignez de supprimer accidentellement plusieurs documents. Le plus de documents qu'il supprimera est un, donc si vous faites une erreur "gros doigt", vous ne supprimerez pas accidentellement tous les documents de la collection (à moins bien sûr qu'il n'y ait qu'un seul document dans la collection).

Le db.collection.deleteMany() Méthode

Le db.collection.deleteMany() la méthode est similaire à db.collection.deleteOne() sauf qu'il peut supprimer plusieurs documents.

En fait, c'est probablement plus comme remove() , car il peut supprimer plusieurs documents et un seul document (bien qu'il n'ait pas le justOne paramètre comme remove() fait).

Cette méthode peut être pratique si vous souhaitez supprimer tous les documents correspondant à un critère donné.

Exemple :

db.employees.deleteMany({ "salary": { $gt: 80000 } })

Résultat :

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

Cela a supprimé tous les documents qui ont un salary champ supérieur à 80 000. Dans ce cas, seuls deux documents correspondent, mais il peut s'agir de n'importe quel nombre.

Vous pouvez également utiliser db.collection.deleteMany() pour supprimer tous les documents de la collection.

Exemple :

db.employees.deleteMany({})

Résultat :

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

Dans ce cas, il y avait cinq documents dans la collection et tous les cinq ont été supprimés.

Plus d'informations

Les méthodes ci-dessus acceptent également un certain nombre d'arguments facultatifs, tels que writeConcern et collation .

deleteOne() et deleteMany() accepter également un hint arguments.

Vous trouverez ci-dessous des liens vers la documentation MongoDB pour chaque méthode/commande :

  • db.collection.remove()
  • delete
  • db.collection.deleteOne()
  • db.collection.deleteMany()