I MongoDB er db.collection.deleteOne()
metode fjerner et enkelt dokument fra en samling. Med andre ord, den sletter den.
collection
del er navnet på den samling, som dokumentet skal fjernes fra.
Eksempel
Lad os udfylde en samling kaldet employees
med fem dokumenter:
db.employees.insertMany([
{ _id: 1, name: "Sandy", salary: 55000 },
{ _id: 2, name: "Sarah", salary: 128000 },
{ _id: 3, name: "Fritz", salary: 25000 },
{ _id: 4, name: "Chris", salary: 45000 },
{ _id: 5, name: "Beck", salary: 82000 }
])
Lad os nu bruge db.collection.deleteOne()
for at slette et af disse dokumenter.
db.employees.deleteOne({ "_id": 4 })
Resultat:
{ "acknowledged" : true, "deletedCount" : 1 }
Dette slettede medarbejder nummer 4.
Lad os tage et kig på samlingen for at bekræfte.
db.employees.find()
Resultat:
{ "_id" : 1, "name" : "Sandy", "salary" : 55000 } { "_id" : 2, "name" : "Sarah", "salary" : 128000 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 }
Vi kan se, at medarbejder nummer 4 ikke længere findes i samlingen.
Brug af en bredere tilstand
I det foregående eksempel brugte vi _id
felt for den medarbejder, som vi ønskede at slette. Fordi _id
felt er den unikke identifikator for hvert dokument, dette gjorde det muligt for os at slette det nøjagtige dokument, som vi ønskede at blive slettet.
Det er også muligt at slette et enkelt dokument uden at være så præcis om, hvilket der slettes. For eksempel kan du bruge et bredt filter, der returnerer mange dokumenter, men kun slette det første dokument fra disse resultater.
For eksempel kunne vi filtrere efter medarbejdere, der tjener mere end 80.000 om året, og derefter slette det første dokument i den gruppe.
db.employees.deleteOne({ "salary": { $gt: 80000 } })
Resultat:
{ "acknowledged" : true, "deletedCount" : 1 }
I dette eksempel blev kun ét dokument slettet, selvom der var to dokumenter, der matchede kriterierne.
Vi kan tage et kig på samlingen for at se, hvilken der blev slettet.
db.employees.find()
Resultat:
{ "_id" : 1, "name" : "Sandy", "salary" : 55000 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 }
Vi kan endda tage det et skridt videre og fjerne alle filtre, hvilket betyder, at den vælger fra alle dokumenter i samlingen.
db.employees.deleteOne({})
Resultat:
{ "acknowledged" : true, "deletedCount" : 1 }
Vi kan igen tjekke samlingen for at se, hvilken der blev slettet.
db.employees.find()
Resultat:
{ "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 }
Som forventet blev det første dokument slettet.
Flere oplysninger
db.collection.deleteOne()
metode accepterer også valgfri parametre såsom collation
, hint
, og writeConcern
.
Se MongoDB-dokumentationen for mere information.