sql >> Database >  >> NoSQL >> MongoDB

MongoDB - Een document verwijderen

In MongoDB kunt u documenten op drie manieren verwijderen.

MongoDB biedt drie methoden voor het verwijderen van documenten:

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

De db.collection.deleteOne() Methode

De db.collection.deleteOne() verwijdert slechts één document, zelfs als meer dan één document aan de criteria voldoet.

Hier is een voorbeeld van de db.collection.deleteOne() methode om een ​​enkel document te verwijderen.

Laten we eerst een query uitvoeren die meerdere resultaten retourneert:

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

Resultaten:

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

Oké, dus we weten dat er drie documenten zijn die aan die criteria voldoen.

Laten we nu exact dezelfde filtercriteria gebruiken voor onze db.collection.deleteOne() methode:

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

Resulterend bericht:

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

Er is dus maar één document verwijderd, terwijl drie documenten aan de criteria voldeden.

Laten we de find() . uitvoeren vraag opnieuw om te zien welke documenten er nog zijn:

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

Resultaten:

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

De db.collection.deleteMany() Methode

De db.collection.deleteMany() methode verwijdert alle documenten die voldoen aan de criteria.

Dus laten we de db.collection.deleteMany() . uitvoeren methode met exact dezelfde criteria als ons vorige voorbeeld. Vergeet niet dat er nog twee records over zijn. Laten we eens kijken of db.collection.deleteMany() verwijdert beide:

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

Resulterend bericht:

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

Dus de overige twee records zijn verwijderd.

De db.collection.remove() Methode

De db.collection.remove() methode verwijdert een enkel document of alle documenten die voldoen aan de opgegeven criteria.

Hier verwijderen we alle documenten waarvan de artiestennaam "AC/DC" is.

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

Resultaten:

WriteResult({ "nRemoved" : 1 })

In dit geval is er maar één AC/DC :)

De justOne Optie

U kunt de justOne . gebruiken parameter om de verwijderbewerking te beperken tot slechts één document (net zoals bij het gebruik van db.collection.deleteOne() ).

Hier is een voorbeeld.

Laten we eerst een query uitvoeren die meerdere documenten retourneert:

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

Resultaten:

{ "_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 }

Nu zullen we een van die records verwijderen met behulp van de justOne optie. Nogmaals, we gebruiken exact dezelfde filtercriteria:

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

Resulterend bericht:

WriteResult({ "nRemoved" : 1 })

Laten we nu dezelfde query uitvoeren om te zien welke documenten er nog zijn:

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

Resultaten:

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

Alle documenten in een verzameling verwijderen

U kunt alle documenten in een verzameling eenvoudig verwijderen door filtercriteria weg te laten.

Laten we alle documenten in de artiesten . verwijderen collectie:

db.artists.remove( {} )

Resulterend bericht:

WriteResult({ "nRemoved" : 8 })

Als u een Fout ontvangt:verwijderen heeft een zoekopdracht nodig fout, controleer of u niet bent vergeten de accolades toe te voegen. Je moet deze nog steeds toevoegen.


  1. Hoe krijg ik alle sleutels in Redis

  2. Hoe voer ik de mongodump-opdracht programmatisch uit vanuit node.js?

  3. hoe een .csv-gegevensbestand in de Redis-database te importeren

  4. Gebruik MongoEngine en PyMongo samen