V MongoDB db.collection.deleteOne()
metoda odstraní jeden dokument z kolekce. Jinými slovy, smaže jej.
collection
část je název kolekce, ze které má být dokument odebrán.
Příklad
Pojďme naplnit sbírku nazvanou employees
s pěti dokumenty:
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 }
])
Nyní použijeme db.collection.deleteOne()
smazat jeden z těchto dokumentů.
db.employees.deleteOne({ "_id": 4 })
Výsledek:
{ "acknowledged" : true, "deletedCount" : 1 }
Tím byl odstraněn zaměstnanec číslo 4.
Pojďme se podívat na sbírku a ověřit.
db.employees.find()
Výsledek:
{ "_id" : 1, "name" : "Sandy", "salary" : 55000 } { "_id" : 2, "name" : "Sarah", "salary" : 128000 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 }
Vidíme, že zaměstnanec číslo 4 již ve sbírce neexistuje.
Použití širší podmínky
V předchozím příkladu jsme použili _id
pole zaměstnance, kterého jsme chtěli smazat. Protože _id
pole je jedinečný identifikátor pro každý dokument, což nám umožnilo smazat přesně ten dokument, který jsme chtěli smazat.
Je také možné smazat jeden dokument, aniž byste museli přesně určit, který z nich je odstraněn. Můžete například použít široký filtr, který vrátí mnoho dokumentů, ale z těchto výsledků odstraní pouze první dokument.
Mohli bychom například filtrovat podle zaměstnanců, kteří vydělávají více než 80 000 ročně, a poté smazat první dokument v této skupině.
db.employees.deleteOne({ "salary": { $gt: 80000 } })
Výsledek:
{ "acknowledged" : true, "deletedCount" : 1 }
V tomto příkladu byl odstraněn pouze jeden dokument, přestože kritériím odpovídaly dva dokumenty.
Můžeme se podívat na sbírku a zjistit, která z nich byla smazána.
db.employees.find()
Výsledek:
{ "_id" : 1, "name" : "Sandy", "salary" : 55000 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 }
Můžeme to udělat ještě o krok dále a odstranit všechny filtry, což znamená, že si vybere ze všech dokumentů ve sbírce.
db.employees.deleteOne({})
Výsledek:
{ "acknowledged" : true, "deletedCount" : 1 }
Znovu můžeme zkontrolovat sbírku a zjistit, která z nich byla smazána.
db.employees.find()
Výsledek:
{ "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 }
Podle očekávání byl první dokument smazán.
Další informace
db.collection.deleteOne()
metoda také přijímá volitelné parametry, jako je collation
, hint
a writeConcern
.
Další informace naleznete v dokumentaci MongoDB.