I MongoDB kan du ta bort dokument med en av tre metoder.
MongoDB tillhandahåller tre metoder för att ta bort dokument:
db.collection.deleteOne()
db.collection.deleteMany()
db.collection.remove()
db.collection.deleteOne()
Metod
db.collection.deleteOne()
tar bara bort ett dokument, även om mer än ett dokument matchar kriterierna.
Här är ett exempel på db.collection.deleteOne()
metod för att ta bort ett enskilt dokument.
Låt oss först köra en fråga som returnerar flera resultat:
db.artists.find( { artistnamn:{ $in:[ "The Kooks", "Gang of Four", "Bastille" ] } )
Resultat:
{ "_id" :ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" :"The Kooks" }{ "_id" :ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" :"Objektnamn" :"B_atistille" ("5781d7f248ef8c6b3ffb014f"), "artistname" :"Gang of Four" }
OK, så vi vet att det finns tre dokument som matchar de kriterierna.
Låt oss nu använda exakt samma filtreringskriterier för vår db.collection.deleteOne()
metod:
db.artists.deleteOne( { artistnamn:{ $in:[ "The Kooks", "Gang of Four", "Bastille" ] } )
Resultatmeddelande:
{ "acknowledged" :true, "deletedCount" :1 }
Så bara ett dokument raderades, trots att tre dokument matchade kriterierna.
Låt oss köra find()
fråga igen för att se vilka dokument som finns kvar:
db.artists.find( { artistnamn:{ $in:[ "The Kooks", "Gang of Four", "Bastille" ] } )
Resultat:
{ "_id" :ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" :"Bastille" }{ "_id" :ObjectId("5781d7f248ef8c6b3ffb014f"), "artistnamn av fyra" :"Gang> av fyra"
db.collection.deleteMany()
Metod
db.collection.deleteMany()
metod tar bort alla dokument som matchar kriterierna.Så låt oss köra
db.collection.deleteMany()
metod med exakt samma kriterier som vårt tidigare exempel. Kom ihåg att två rekord återstår. Låt oss se omdb.collection.deleteMany()
tar bort båda:db.artists.deleteMany( { artistnamn:{ $in:[ "The Kooks", "Gang of Four", "Bastille" ] } )Resultatmeddelande:
{ "acknowledged" :true, "deletedCount" :2 }Så de återstående två posterna raderades.
db.collection.remove()
Metod
db.collection.remove()
metod tar bort ett enstaka dokument eller alla dokument som matchar de angivna kriterierna.Här tar vi bort alla dokument där artistnamnet är "AC/DC".
db.artists.remove( { artistnamn:"AC/DC" } )Resultat:
WriteResult({ "nRemoved" :1 })I det här fallet finns det bara en AC/DC :)
justOne
AlternativDu kan använda
justOne
parameter för att begränsa borttagningen till bara ett dokument (precis som att användadb.collection.deleteOne()
).Här är ett exempel.
Låt oss först köra en fråga som returnerar flera dokument:
db.musicians.find( { född:{ $lt:1950 } } )Resultat:
{ "_id" :2, "name" :"Ian Paice", "instrument" :"Trummor", "född" :1948 }{ "_id" :3, "name" :"Roger Glover", " instrument" :"Bas", "född" :1945 }{ "_id" :5, "name" :"Don Airey", "instrument" :"Keyboards", "född" :1948 }Nu tar vi bort en av dessa poster med
justOne
alternativ. Återigen kommer vi att använda exakt samma filtreringskriterier:db.musicians.remove( { född:{ $lt:1950 } }, { justOne:1 } )Resultatmeddelande:
WriteResult({ "nRemoved" :1 })Låt oss nu köra samma fråga för att se vilka dokument som finns kvar:
db.musicians.find( { född:{ $lt:1950 } } )Resultat:
{ "_id" :3, "name" :"Roger Glover", "instrument" :"Bass", "född" :1945 }{ "_id" :5, "name" :"Don Airey", " instrument" :"Keyboards", "född" :1948 }Ta bort alla dokument i en samling
Du kan ta bort alla dokument i en samling helt enkelt genom att utelämna eventuella filtreringskriterier.
Låt oss ta bort alla dokument i artister samling:
db.artists.remove( {} )Resultatmeddelande:
WriteResult({ "nRemoved" :8 })Om du får ett Fel:ta bort behöver en fråga fel, kontrollera att du inte har glömt att inkludera de lockiga hängslen. Du måste fortfarande inkludera dessa.