I MongoDB, hvis du har brug for at slette et dokument i mongo-skallen, kan du bruge:
db.collection.remove()
metodedelete
kommandodb.collection.deleteOne()
metodedb.collection.deleteMany()
metode
Denne artikel giver eksempler på hver.
db.collection.remove()
Metode
db.collection.remove()
metode fjerner (dvs. sletter) dokumenter fra en samling. Du kan slette alle dokumenter, nogle dokumenter eller et enkelt dokument efter behov.
Her er et eksempel på sletning af et bestemt dokument.
db.employees.remove({ "_id": 3 })
Resultat:
WriteResult({ "nRemoved" : 1 })
Det sletter dokumentet med en _id
værdi af 3
fra employees
samling.
Det behøver dog ikke at matche et enkelt dokument. Filterkriterierne kan matche flere dokumenter, og du kan endda lade filterkriterierne være tomme for at matche alle dokumenter (dvs. slette alle dokumenter).
Her er et eksempel på sletning af alle dokumenter:
db.employees.remove({})
Resultat:
WriteResult({ "nRemoved" : 5 })
Resultatet viser os, at fem dokumenter blev fjernet (så samlingen indeholdt åbenbart fem dokumenter, før vi slettede dem alle).
remove()
metode accepterer også en justOne
parameter for at begrænse fjernelsen til kun ét dokument. Dette sletter det første dokument, der matcher slettekriterierne.
Eksempel:
db.employees.remove({}, "justOne: true")
Resultat:
WriteResult({ "nRemoved" : 1 })
I dette tilfælde er vores filterkriterier et tomt dokument, og det matcher derfor alle dokumenter i samlingen. Det er dog kun ét dokument, der slettes, fordi vi bruger justOne: true
.
delete
Kommando
delete
kommandoen gør nøjagtig det samme som remove()
metode. Faktisk er remove()
metoden bruger delete-kommandoen.
Her er et eksempel på sletning af et bestemt dokument med delete
kommando.
db.runCommand(
{
delete: "employees",
deletes: [ { q: { _id: 4 }, limit: 1 } ]
}
)
Resultat:
{ "n" : 1, "ok" : 1 }
db.collection.deleteOne()
Metode
db.collection.deleteOne()
metoden ligner db.collection.remove()
metode, bortset fra at den kun sletter ét dokument fra den angivne samling.
Den accepterer en filterbetingelse, ligesom db.collection.remove()
.
Eksempel:
db.employees.deleteOne({ "_id": 4 })
Resultat:
{ "acknowledged" : true, "deletedCount" : 1 }
Dette slettede medarbejder nummer 4.
Hvis du angiver et mere bredt filter, der returnerer flere dokumenter, sletter det kun det første.
For eksempel sletter følgende det første dokument i samlingen, uanset hvor mange dokumenter der er i samlingen:
db.employees.deleteOne({})
db.collection.deleteOne()
metode kan være en praktisk metode at bruge, hvis du er bekymret for ved et uheld at slette flere dokumenter. De fleste dokumenter, den vil slette, er ét, så hvis du laver en "fed finger" fejl, vil du ikke ved et uheld fjerne alle dokumenter fra samlingen (medmindre der selvfølgelig kun er ét dokument i samlingen).
db.collection.deleteMany()
Metode
db.collection.deleteMany()
metode ligner db.collection.deleteOne()
bortset fra at den kan slette flere dokumenter.
Faktisk er det nok mere som remove()
, fordi den kan fjerne flere dokumenter og et enkelt dokument (selvom den ikke har justOne
parameter som remove()
gør).
Denne metode kan være praktisk, hvis du ønsker at slette alle dokumenter, der matcher et givet kriterium.
Eksempel:
db.employees.deleteMany({ "salary": { $gt: 80000 } })
Resultat:
{ "acknowledged" : true, "deletedCount" : 2 }
Dette slettede alle dokumenter, der har en salary
felt over 80.000. I dette tilfælde matchede kun to dokumenter, men det kunne have været et hvilket som helst antal.
Du kan også bruge db.collection.deleteMany()
for at slette alle dokumenter fra samlingen.
Eksempel:
db.employees.deleteMany({})
Resultat:
{ "acknowledged" : true, "deletedCount" : 5 }
I dette tilfælde var der fem dokumenter i samlingen, og alle fem blev slettet.
Flere oplysninger
Ovenstående metoder accepterer også en række valgfrie argumenter, såsom writeConcern
og collation
.
deleteOne()
og deleteMany()
accepter også et hint
argument.
Nedenfor er links til MongoDB-dokumentationen for hver metode/kommando:
db.collection.remove()
delete
db.collection.deleteOne()
db.collection.deleteMany()