sql >> Databasteknik >  >> NoSQL >> MongoDB

4 sätt att ta bort ett dokument i MongoDB

I MongoDB, om du behöver ta bort ett dokument i mongo-skalet, kan du använda:

  • Den db.collection.remove() metod
  • delete kommando
  • db.collection.deleteOne() metod
  • Den db.collection.deleteMany() metod

Den här artikeln ger exempel på var och en.

db.collection.remove() Metod

db.collection.remove() metod tar bort (d.v.s. tar bort) dokument från en samling. Du kan ta bort alla dokument, vissa dokument eller ett enda dokument efter behov.

Här är ett exempel på att ta bort ett specifikt dokument.

db.employees.remove({ "_id": 3 })

Resultat:

WriteResult({ "nRemoved" : 1 })

Det tar bort dokumentet med ett _id värdet 3 från employees samling.

Det behöver dock inte matcha ett enda dokument. Filterkriterierna kan matcha flera dokument, och du kan till och med lämna filterkriterierna tomma för att matcha alla dokument (dvs. ta bort alla dokument).

Här är ett exempel på att ta bort alla dokument:

db.employees.remove({})

Resultat:

WriteResult({ "nRemoved" : 5 })

Resultatet visar att fem dokument togs bort (så samlingen innehöll uppenbarligen fem dokument innan vi raderade dem alla).

remove() metoden accepterar också en justOne parameter för att begränsa borttagningen till bara ett dokument. Detta tar bort det första dokumentet som matchar raderingskriterierna.

Exempel:

db.employees.remove({}, "justOne: true")

Resultat:

WriteResult({ "nRemoved" : 1 })

I det här fallet är våra filterkriterier ett tomt dokument, så det matchar alla dokument i samlingen. Men bara ett dokument raderas, eftersom vi använder justOne: true .

delete Kommando

delete kommandot gör exakt samma sak som remove() metod. Faktum är att remove() metoden använder kommandot delete.

Här är ett exempel på att ta bort ett specifikt dokument med delete kommando.

db.runCommand(
   {
      delete: "employees",
      deletes: [ { q: { _id: 4 }, limit: 1 } ]
   }
)

Resultat:

{ "n" : 1, "ok" : 1 }

db.collection.deleteOne() Metod

db.collection.deleteOne() metoden liknar db.collection.remove() metod, förutom att den bara tar bort ett dokument från den angivna samlingen.

Den accepterar ett filtervillkor, precis som db.collection.remove() .

Exempel:

db.employees.deleteOne({ "_id": 4 })

Resultat:

{ "acknowledged" : true, "deletedCount" : 1 }

Detta raderade anställd nummer 4.

Om du tillhandahåller ett bredare filter som returnerar flera dokument, tar det bara bort det första.

Följande till exempel tar bort det första dokumentet i samlingen, oavsett hur många dokument som finns i samlingen:

db.employees.deleteOne({})

db.collection.deleteOne() metod kan vara en praktisk metod att använda om du är orolig för att av misstag radera flera dokument. De flesta dokument som kommer att raderas är ett, så om du gör ett "fet finger" misstag kommer du inte att ta bort alla dokument från samlingen av misstag (såvida det inte bara finns ett dokument i samlingen).

db.collection.deleteMany() Metod

db.collection.deleteMany() metod liknar db.collection.deleteOne() förutom att det kan radera flera dokument.

Egentligen är det förmodligen mer som remove() , eftersom den kan ta bort flera dokument och ett enda dokument (även om den inte har justOne parameter som remove() gör).

Denna metod kan vara praktisk om du vill ta bort alla dokument som matchar ett givet kriterium.

Exempel:

db.employees.deleteMany({ "salary": { $gt: 80000 } })

Resultat:

{ "acknowledged" : true, "deletedCount" : 2 }

Detta raderade alla dokument som har en salary fält över 80 000. I det här fallet matchade bara två dokument, men det kunde ha varit vilket antal som helst.

Du kan också använda db.collection.deleteMany() för att radera alla dokument från samlingen.

Exempel:

db.employees.deleteMany({})

Resultat:

{ "acknowledged" : true, "deletedCount" : 5 }

I det här fallet fanns det fem dokument i samlingen och alla fem raderades.

Mer information

Ovanstående metoder accepterar också ett antal valfria argument, såsom writeConcern och collation .

deleteOne() och deleteMany() acceptera även ett hint argument.

Nedan finns länkar till MongoDB-dokumentationen för varje metod/kommando:

  • db.collection.remove()
  • delete
  • db.collection.deleteOne()
  • db.collection.deleteMany()

  1. Bygga mongo-cxx-drivrutin med CMake ExternalProject_Add

  2. Lombok - java.lang.StackOverflowError:null på toString-metoden

  3. Tillkännage ClusterControl 1.4.2 - DevOps Edition

  4. Hur man använder aggregrate i mongodb till $match _id