Als u in MongoDB een document in de mongo-shell moet verwijderen, kunt u het volgende gebruiken:
- De
db.collection.remove()
methode - De
delete
commando - De
db.collection.deleteOne()
methode - De
db.collection.deleteMany()
methode
Dit artikel geeft voorbeelden van elk.
De db.collection.remove()
Methode
De db.collection.remove()
methode verwijdert (d.w.z. verwijdert) documenten uit een verzameling. U kunt desgewenst alle documenten, sommige documenten of een enkel document verwijderen.
Hier is een voorbeeld van het verwijderen van een specifiek document.
db.employees.remove({ "_id": 3 })
Resultaat:
WriteResult({ "nRemoved" : 1 })
Dat verwijdert het document met een _id
waarde van 3
van de employees
collectie.
Het hoeft echter niet met een enkel document overeen te komen. De filtercriteria kunnen overeenkomen met meerdere documenten en u kunt de filtercriteria zelfs leeg laten om alle documenten te matchen (d.w.z. alle documenten verwijderen).
Hier is een voorbeeld van het verwijderen van alle documenten:
db.employees.remove({})
Resultaat:
WriteResult({ "nRemoved" : 5 })
Het resultaat laat ons zien dat vijf documenten zijn verwijderd (dus de collectie bevatte duidelijk vijf documenten voordat we ze allemaal verwijderden).
De remove()
methode accepteert ook een justOne
parameter om de verwijdering te beperken tot slechts één document. Hiermee wordt het eerste document verwijderd dat overeenkomt met de verwijderingscriteria.
Voorbeeld:
db.employees.remove({}, "justOne: true")
Resultaat:
WriteResult({ "nRemoved" : 1 })
In dit geval zijn onze filtercriteria een leeg document en komen dus overeen met alle documenten in de collectie. Er wordt echter maar één document verwijderd, omdat we justOne: true
. gebruiken .
De delete
Commando
De delete
commando doet precies hetzelfde als het remove()
methode. In feite is de remove()
methode gebruikt het delete-commando.
Hier is een voorbeeld van het verwijderen van een specifiek document met de delete
commando.
db.runCommand(
{
delete: "employees",
deletes: [ { q: { _id: 4 }, limit: 1 } ]
}
)
Resultaat:
{ "n" : 1, "ok" : 1 }
De db.collection.deleteOne()
Methode
De db.collection.deleteOne()
methode is vergelijkbaar met de db.collection.remove()
methode, behalve dat het slechts één document uit de opgegeven verzameling verwijdert.
Het accepteert een filtervoorwaarde, net als db.collection.remove()
.
Voorbeeld:
db.employees.deleteOne({ "_id": 4 })
Resultaat:
{ "acknowledged" : true, "deletedCount" : 1 }
Dit verwijderde werknemer nummer 4.
Als je een breder filter opgeeft dat meerdere documenten retourneert, wordt alleen de eerste verwijderd.
Het volgende verwijdert bijvoorbeeld het eerste document in de verzameling, ongeacht het aantal documenten in de verzameling:
db.employees.deleteOne({})
De db.collection.deleteOne()
methode kan een handige methode zijn om te gebruiken als u zich zorgen maakt over het per ongeluk verwijderen van meerdere documenten. De meeste documenten die worden verwijderd, zijn er één, dus als u een "dikke vinger"-fout maakt, verwijdert u niet per ongeluk alle documenten uit de verzameling (tenzij er natuurlijk maar één document in de verzameling is).
De db.collection.deleteMany()
Methode
De db.collection.deleteMany()
methode is vergelijkbaar met db.collection.deleteOne()
behalve dat het meerdere documenten kan verwijderen.
Eigenlijk lijkt het meer op remove()
, omdat het meerdere documenten en een enkel document kan verwijderen (hoewel het niet de justOne
heeft parameter zoals remove()
doet).
Deze methode kan handig zijn als u alle documenten wilt verwijderen die aan een bepaald criterium voldoen.
Voorbeeld:
db.employees.deleteMany({ "salary": { $gt: 80000 } })
Resultaat:
{ "acknowledged" : true, "deletedCount" : 2 }
Hiermee zijn alle documenten verwijderd met een salary
veld meer dan 80000. In dit geval kwamen slechts twee documenten overeen, maar het had elk willekeurig aantal kunnen zijn.
U kunt ook db.collection.deleteMany()
. gebruiken om alle documenten uit de collectie te verwijderen.
Voorbeeld:
db.employees.deleteMany({})
Resultaat:
{ "acknowledged" : true, "deletedCount" : 5 }
In dit geval waren er vijf documenten in de collectie en werden ze alle vijf verwijderd.
Meer informatie
De bovenstaande methoden accepteren ook een aantal optionele argumenten, zoals writeConcern
en collation
.
deleteOne()
en deleteMany()
accepteer ook een hint
argument.
Hieronder staan links naar de MongoDB-documentatie voor elke methode/opdracht:
db.collection.remove()
delete
db.collection.deleteOne()
db.collection.deleteMany()