Pokud v MongoDB potřebujete smazat dokument v mongo shellu, můžete použít:
- Příkaz
db.collection.remove()
metoda - Položka
delete
příkaz - Funkce
db.collection.deleteOne()
metoda - Příkaz
db.collection.deleteMany()
metoda
Tento článek poskytuje příklady každého z nich.
Příkaz db.collection.remove()
Metoda
db.collection.remove()
metoda odstraní (tj. odstraní) dokumenty z kolekce. Podle potřeby můžete odstranit všechny dokumenty, některé dokumenty nebo jeden dokument.
Zde je příklad smazání konkrétního dokumentu.
db.employees.remove({ "_id": 3 })
Výsledek:
WriteResult({ "nRemoved" : 1 })
Tím se smaže dokument s _id
hodnotu 3
od employees
kolekce.
Nemusí však odpovídat jedinému dokumentu. Kritéria filtru mohou odpovídat více dokumentům a dokonce můžete nechat kritéria filtru prázdná, aby odpovídala všem dokumentům (tj. smazat všechny dokumenty).
Zde je příklad odstranění všech dokumentů:
db.employees.remove({})
Výsledek:
WriteResult({ "nRemoved" : 5 })
Výsledek nám ukazuje, že bylo odstraněno pět dokumentů (takže sbírka zjevně obsahovala pět dokumentů, než jsme je všechny smazali).
remove()
metoda také přijímá 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í.
Příklad:
db.employees.remove({}, "justOne: true")
Výsledek:
WriteResult({ "nRemoved" : 1 })
V tomto případě je naším kritériem filtru prázdný dokument, a proto odpovídá všem dokumentům v kolekci. Smaže se však pouze jeden dokument, protože používáme justOne: true
.
Položka delete
Příkaz
delete
příkaz dělá přesně to samé jako remove()
metoda. Ve skutečnosti, remove()
metoda používá příkaz delete.
Zde je příklad odstranění konkrétního dokumentu pomocí delete
příkaz.
db.runCommand(
{
delete: "employees",
deletes: [ { q: { _id: 4 }, limit: 1 } ]
}
)
Výsledek:
{ "n" : 1, "ok" : 1 }
db.collection.deleteOne()
Metoda
db.collection.deleteOne()
metoda je podobná db.collection.remove()
kromě toho, že odstraní pouze jeden dokument ze zadané kolekce.
Přijímá podmínku filtru, stejně jako db.collection.remove()
.
Příklad:
db.employees.deleteOne({ "_id": 4 })
Výsledek:
{ "acknowledged" : true, "deletedCount" : 1 }
Tím byl odstraněn zaměstnanec číslo 4.
Pokud poskytnete širší filtr, který vrátí více dokumentů, odstraní pouze první.
Následující příklad odstraní první dokument ve sbírce bez ohledu na počet dokumentů ve sbírce:
db.employees.deleteOne({})
db.collection.deleteOne()
Tato metoda může být užitečnou metodou, pokud se obáváte náhodného smazání více dokumentů. Nejvíce dokumentů, které smaže, je jeden, takže pokud uděláte chybu „tlustý prst“, neodstraníte náhodně všechny dokumenty ze sbírky (pokud samozřejmě ve sbírce není pouze jeden dokument).
Položka db.collection.deleteMany()
Metoda
db.collection.deleteMany()
metoda je podobná db.collection.deleteOne()
kromě toho, že může odstranit více dokumentů.
Ve skutečnosti je to pravděpodobně spíše jako remove()
, protože dokáže odstranit více dokumentů a jeden dokument (ačkoli nemá justOne
parametr jako remove()
ano).
Tato metoda může být užitečná, pokud chcete odstranit všechny dokumenty, které odpovídají zadaným kritériím.
Příklad:
db.employees.deleteMany({ "salary": { $gt: 80000 } })
Výsledek:
{ "acknowledged" : true, "deletedCount" : 2 }
Tím byly odstraněny všechny dokumenty, které mají salary
pole přes 80 000. V tomto případě se shodovaly pouze dva dokumenty, ale mohlo to být libovolné číslo.
Můžete také použít db.collection.deleteMany()
k odstranění všech dokumentů z kolekce.
Příklad:
db.employees.deleteMany({})
Výsledek:
{ "acknowledged" : true, "deletedCount" : 5 }
V tomto případě bylo ve sbírce pět dokumentů a všech pět bylo smazáno.
Další informace
Výše uvedené metody také přijímají řadu volitelných argumentů, jako je writeConcern
a collation
.
deleteOne()
a deleteMany()
také přijmout hint
argument.
Níže jsou uvedeny odkazy na dokumentaci MongoDB pro každou metodu/příkaz:
db.collection.remove()
delete
db.collection.deleteOne()
db.collection.deleteMany()