V MongoDB db.collection.remove()
metoda odstraní dokumenty z kolekce. Jinými slovy, odstraní je.
collection
část je název kolekce, ze které se mají dokumenty odstranit.
Podle potřeby můžete odstranit všechny dokumenty, některé dokumenty nebo jeden dokument.
Odebrat všechny dokumenty
V tomto příkladu odstraníme všechny dokumenty z kolekce nazvané employees
:
db.employees.remove({})
Výsledek:
WriteResult({ "nRemoved" : 5 })
Výsledek nám ukazuje, že bylo odstraněno pět dokumentů.
Odebrat vybrané dokumenty
V tomto příkladu odstraníme pouze některé dokumenty.
Nejprve znovu vyplňte sbírku našich zaměstnanců:
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í odeberme všechny zaměstnance, kteří vydělávají více než 80 000 ročně.
db.employees.remove({ "salary": { $gt: 80000 } })
Výsledek:
WriteResult({ "nRemoved" : 2 })
Tentokrát byly odstraněny pouze dva dokumenty.
Pojďme se podívat na sbírku.
db.employees.find()
Výsledek:
{ "_id" : 1, "name" : "Sandy", "salary" : 55000 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 4, "name" : "Chris", "salary" : 45000 }
Podle očekávání ze společnosti odešli dva nejlépe vydělávající lidé.
Odebrat jeden dokument
Existuje několik způsobů, jak odstranit jeden dokument z kolekce. Metoda, kterou použijete, bude záviset na tom, co musíte udělat.
Můžete buď:
- Odstranění konkrétního dokumentu
- Použijte
justOne
parametr
Odstranění konkrétního dokumentu
Pokud potřebujete odstranit konkrétní dokument, můžete zadat _id
dokumentu hodnotu k odstranění tohoto konkrétního dokumentu.
Takže pokud bychom chtěli odstranit řekněme Fritze z výše uvedené sbírky, mohli bychom zadat jeho _id
hodnotu 3
. Takhle:
db.employees.remove({ "_id": 3 })
Výsledek:
WriteResult({ "nRemoved" : 1 })
A pojďme znovu zkontrolovat sbírku:
db.employees.find()
Výsledek:
{ "_id" : 1, "name" : "Sandy", "salary" : 55000 } { "_id" : 4, "name" : "Chris", "salary" : 45000 }
Jak se očekávalo, Fritz nyní zmizel.
Použijte justOne
Parametr
Alternativně můžete použít justOne
parametr pro omezení odstranění pouze na jeden dokument. Tím se odstraní první dokument, který odpovídá kritériím pro odstranění.
Abychom tento bod co nejjasněji demonstrovali, odeberme všechny zbývající dokumenty z kolekce a poté ji znovu naplňte:
db.employees.remove({})
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 }
])
Dobře, takže víme, že v naší sbírce je pět dokumentů.
Nyní použijeme justOne
parametr k odstranění jednoho dokumentu.
db.employees.remove({}, "justOne: true")
Výsledek:
WriteResult({ "nRemoved" : 1 })
A podívejme se na sbírku, abychom viděli, který dokument byl smazán.
db.employees.find()
Výsledek:
{ "_id" : 2, "name" : "Sarah", "salary" : 128000 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 4, "name" : "Chris", "salary" : 45000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 }
Podle očekávání byl první dokument smazán.
justOne
parametr má také jinou syntaxi. Můžete jej také použít uvnitř dokumentu. Budete to muset udělat, pokud budete metodě předávat další argumenty.
Zde je příklad.
db.employees.remove(
{},
{
justOne: true,
writeConcern: { w: "majority", wtimeout: 3000 },
collation: { locale: "de", strength: 1 }
}
)
Výsledek:
WriteResult({ "nRemoved" : 1 })
A pojďme se znovu podívat na kolekci
db.employees.find()
Výsledek:
{ "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 4, "name" : "Chris", "salary" : 45000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 }
Podle očekávání byl další dokument smazán.
Další informace
Další informace naleznete v dokumentaci MongoDB.