V MongoDB můžete odstranit dokumenty jedním ze tří způsobů.
MongoDB poskytuje tři způsoby odstraňování dokumentů:
db.collection.deleteOne()db.collection.deleteMany()db.collection.remove()
db.collection.deleteOne() Metoda
db.collection.deleteOne() odstraní pouze jeden dokument, i když kritériím odpovídá více než jeden dokument.
Zde je příklad db.collection.deleteOne() způsob odstranění jednoho dokumentu.
Nejprve spusťte dotaz, který vrátí více výsledků:
db.artists.find( { jméno umělce:{ $in:[ "The Kooks", "Gang of Four", "Bastille" ] } } ) Výsledky:
{ "_id" :ObjectId("5781d7f248ef8c6b3ffb014d"), "jméno umělce" :"The Kooks" }{ "_id" :ObjectId("5781d7f248ef8c6b3ffb014e"), "jméno umělce" :"Id_objektu" :"Id_objektu" :("5781d7f248ef8c6b3ffb014f"), "artistname" :"Gang of Four" } Dobře, takže víme, že existují tři dokumenty, které splňují tato kritéria.
Nyní použijeme přesně stejná kritéria filtrování pro naše db.collection.deleteOne() metoda:
db.artists.deleteOne( { jméno umělce:{ $in:[ "The Kooks", "Gang of Four", "Bastille" ] } } ) Výsledná zpráva:
{ "acknowledged" :true, "deletedCount" :1 } Byl tedy odstraněn pouze jeden dokument, i když tři dokumenty odpovídaly kritériím.
Spusťte find() znovu dotaz, abyste viděli, které dokumenty zbývají:
db.artists.find( { jméno umělce:{ $in:[ "The Kooks", "Gang of Four", "Bastille" ] } } ) Výsledky:
{ "_id" :ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" :"Bastille" }{ "_id" :ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname of Four" :"Gangname" :"Gang Položka db.collection.deleteMany() Metoda
db.collection.deleteMany() metoda odstraní všechny dokumenty, které odpovídají kritériím.
Spusťte tedy db.collection.deleteMany() metoda s přesně stejnými kritérii jako v našem předchozím příkladu. Pamatujte, zbývají dva záznamy. Podívejme se, zda db.collection.deleteMany() smaže oba:
db.artists.deleteMany( { jméno umělce:{ $in:[ "The Kooks", "Gang of Four", "Bastille" ] } } )
Výsledná zpráva:
{ "acknowledged" :true, "deletedCount" :2 }
Takže zbývající dva záznamy byly smazány.
Příkaz db.collection.remove() Metoda
db.collection.remove() metoda odstraní jeden dokument nebo všechny dokumenty, které odpovídají zadaným kritériím.
Zde odstraníme všechny dokumenty, kde je jméno interpreta „AC/DC“.
db.artists.remove( { jméno umělce:"AC/DC" } )
Výsledky:
WriteResult({ "nRemoved" :1 })
V tomto případě je zde pouze jeden AC/DC :)
justOne Možnost
Můžete použít justOne parametr k omezení operace odstranění pouze na jeden dokument (stejně jako použití db.collection.deleteOne() ).
Zde je příklad.
Nejprve spusťte dotaz, který vrátí více dokumentů:
db.musicians.find( { born:{ $lt:1950 } } )
Výsledky:
{ "_id" :2, "name" :"Ian Paice", "nástroj" :"bicí", "born" :1948 }{ "_id" :3, "name" :"Roger Glover", " instrument" :"Basa", "born" :1945 }{ "_id" :5, "name" :"Don Airey", "instrument" :"Klávesnice", "born" :1948 }
Nyní smažeme jeden z těchto záznamů pomocí justOne volba. Opět použijeme přesně stejná kritéria filtrování:
db.musicians.remove( { born:{ $lt:1950 } }, { justOne:1 } )
Výsledná zpráva:
WriteResult({ "nRemoved" :1 })
Nyní spustíme stejný dotaz, abychom zjistili, které dokumenty zbývají:
db.musicians.find( { born:{ $lt:1950 } } )
Výsledky:
{ "_id" :3, "name" :"Roger Glover", "nástroj" :"Bas", "born" :1945 }{ "_id" :5, "name" :"Don Airey", " nástroj" :"Klávesy", "nar" :1948 } Smazat všechny dokumenty ve sbírce
Všechny dokumenty v kolekci můžete jednoduše odstranit vynecháním jakýchkoli kritérií filtrování.
Smažeme všechny dokumenty v
umělci
kolekce:
db.artists.remove( {} )
Výsledná zpráva:
WriteResult({ "nRemoved" :8 })
Pokud se zobrazí
Chyba:odstranění vyžaduje dotaz
chyba, zkontrolujte, zda jste nezapomněli zahrnout složené závorky. Stále je musíte zahrnout.