sql >> Database teknologi >  >> NoSQL >> MongoDB

4 måder at slette et dokument i MongoDB

I MongoDB, hvis du har brug for at slette et dokument i mongo-skallen, kan du bruge:

  • db.collection.remove() metode
  • delete kommando
  • db.collection.deleteOne() metode
  • db.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()

  1. Bull kø:Når et job fejler, hvordan stopper man køen i at behandle resterende job?

  2. JavaScript-designmønstre -- Håndtering af uønsket asynkroni

  3. ioredis nøgle med matchende mønster

  4. Redis lagringsliste inde i hash