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

MongoDB - Supprimer un document

Dans MongoDB, vous pouvez supprimer des documents en utilisant l'une des trois méthodes.

MongoDB propose trois méthodes pour supprimer des documents :

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

Le db.collection.deleteOne() Méthode

Le db.collection.deleteOne() supprime un seul document, même si plusieurs documents correspondent aux critères.

Voici un exemple de db.collection.deleteOne() méthode pour supprimer un seul document.

Exécutons d'abord une requête qui renvoie plusieurs résultats :

db.artists.find( { artistname: { $in: [ "The Kooks", "Gang of Four", "Bastille" ] } } )

Résultats :

{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }

OK, donc nous savons qu'il y a trois documents qui correspondent à ces critères.

Utilisons maintenant exactement les mêmes critères de filtrage pour notre db.collection.deleteOne() méthode :

db.artists.deleteOne( { artistname: { $in: [ "The Kooks", "Gang of Four", "Bastille" ] } } )

Message résultant :

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

Ainsi, un seul document a été supprimé, même si trois documents correspondaient aux critères.

Exécutons le find() interrogez à nouveau pour voir quels documents restent :

db.artists.find( { artistname: { $in: [ "The Kooks", "Gang of Four", "Bastille" ] } } )

Résultats :

{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }

Le db.collection.deleteMany() Méthode

Le db.collection.deleteMany() méthode supprime tous les documents qui correspondent aux critères.

Exécutons donc le db.collection.deleteMany() méthode avec exactement les mêmes critères que notre exemple précédent. N'oubliez pas qu'il reste deux enregistrements. Voyons si db.collection.deleteMany() supprime les deux :

db.artists.deleteMany( { artistname: { $in: [ "The Kooks", "Gang of Four", "Bastille" ] } } )

Message résultant :

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

Les deux enregistrements restants ont donc été supprimés.

Le db.collection.remove() Méthode

Le db.collection.remove() méthode supprime un seul document ou tous les documents qui correspondent aux critères spécifiés.

Ici, nous supprimons tous les documents où le nom de l'artiste est "AC/DC".

db.artists.remove( { artistname: "AC/DC" } )

Résultats :

WriteResult({ "nRemoved" : 1 })

Dans ce cas, il n'y a qu'un seul AC/DC :)

Le justOne Options

Vous pouvez utiliser le justOne paramètre pour limiter l'opération de suppression à un seul document (comme si vous utilisiez db.collection.deleteOne() ).

Voici un exemple.

Commençons par exécuter une requête renvoyant plusieurs documents :

db.musicians.find( { born: { $lt: 1950 } } )

Résultats :

{ "_id" : 2, "name" : "Ian Paice", "instrument" : "Drums", "born" : 1948 }
{ "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 }
{ "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 }

Nous allons maintenant supprimer l'un de ces enregistrements en utilisant le justOne option. Encore une fois, nous utiliserons exactement les mêmes critères de filtrage :

db.musicians.remove( { born: { $lt: 1950 } }, { justOne: 1 } )

Message résultant :

WriteResult({ "nRemoved" : 1 })

Exécutons maintenant la même requête pour voir quels documents restent :

db.musicians.find( { born: { $lt: 1950 } } )

Résultats :

{ "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 }
{ "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 }

Supprimer tous les documents d'une collection

Vous pouvez supprimer tous les documents d'une collection simplement en omettant tout critère de filtrage.

Supprimons tous les documents dans les artistes collecte :

db.artists.remove( {} )

Message résultant :

WriteResult({ "nRemoved" : 8 })

Si vous recevez une Erreur :la suppression nécessite une requête erreur, vérifiez que vous n'avez pas oublié d'inclure les accolades. Vous devez toujours les inclure.