I MongoDB, om du behöver ta bort ett dokument i mongo-skalet, kan du använda:
- Den
db.collection.remove()
metod delete
kommandodb.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()