W MongoDB możesz usuwać dokumenty za pomocą jednej z trzech metod.
MongoDB udostępnia trzy metody usuwania dokumentów:
db.collection.deleteOne()
db.collection.deleteMany()
db.collection.remove()
db.collection.deleteOne()
Metoda
db.collection.deleteOne()
usuwa tylko jeden dokument, nawet jeśli więcej niż jeden dokument spełnia kryteria.
Oto przykład db.collection.deleteOne()
metoda usuwania pojedynczego dokumentu.
Najpierw uruchommy zapytanie, które zwróci wiele wyników:
db.artists.find( { nazwa wykonawcy:{ $in:[ "Kooks", "Gang of Four", "Bastille" ] } } )
Wyniki:
{ "_id" :ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" :"The Kooks" }{ "_id" :ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" :"Bastille" :}{ "Object ("5781d7f248ef8c6b3ffb014f"), "nazwisko wykonawcy" :"Gang Czterech" }
OK, więc wiemy, że istnieją trzy dokumenty, które spełniają te kryteria.
Teraz użyjmy dokładnie tych samych kryteriów filtrowania dla naszej db.collection.deleteOne()
metoda:
db.artists.deleteOne( { nazwa artysty:{ $in:[ "The Kooks", "Gang of Four", "Bastille" ] } } )
Wiadomość wynikowa:
{ "potwierdzone" :prawda, "deletedCount" :1 }
Tak więc tylko jeden dokument został usunięty, mimo że trzy dokumenty spełniały kryteria.
Uruchommy find()
zapytaj ponownie, aby zobaczyć, które dokumenty pozostały:
db.artists.find( { nazwa wykonawcy:{ $in:[ "Kooks", "Gang of Four", "Bastille" ] } } )
Wyniki:
{ "_id" :ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" :"Bastille" }{ "_id" :ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" :"Gang of Four" }
db.collection.deleteMany()
Metoda
db.collection.deleteMany()
metoda usuwa wszystkie dokumenty, które spełniają kryteria.
Uruchommy więc db.collection.deleteMany()
metoda z dokładnie takimi samymi kryteriami jak w naszym poprzednim przykładzie. Pamiętaj, pozostały dwa rekordy. Zobaczmy, czy db.collection.deleteMany()
usuwa oba:
db.artists.deleteMany( { nazwa artysty:{ $in:[ "The Kooks", "Gang of Four", "Bastille" ] } } )
Wiadomość wynikowa:
{ "potwierdzone" :prawda, "deletedCount" :2 }
Więc pozostałe dwa rekordy zostały usunięte.
db.collection.remove()
Metoda
db.collection.remove()
metoda usuwa pojedynczy dokument lub wszystkie dokumenty spełniające określone kryteria.
Tutaj usuwamy wszystkie dokumenty, w których nazwa artysty to „AC/DC”.
db.artists.remove( { nazwa artysty:"AC/DC" } )
Wyniki:
WriteResult({ "nUsunięto" :1 })
W tym przypadku jest tylko jeden AC/DC :)
justOne
Opcja
Możesz użyć justOne
parametr ograniczający operację usuwania tylko do jednego dokumentu (tak jak przy użyciu db.collection.deleteOne()
).
Oto przykład.
Najpierw uruchommy zapytanie, które zwróci wiele dokumentów:
db.muscians.find( { urodzony:{ $lt:1950 } } )
Wyniki:
{ "_id" :2, "name" :"Ian Paice", "instrument" :"Drums", "born" :1948 }{ "_id" :3, "name" :"Roger Glover", " instrument" :"Bass", "born" :1945 }{ "_id" :5, "name" :"Don Airey", "instrument" :"Keyboards", "born" :1948 }
Teraz usuniemy jeden z tych rekordów za pomocą justOne
opcja. Ponownie użyjemy dokładnie tych samych kryteriów filtrowania:
db.muscians.remove( { urodzony:{ $lt:1950 } }, { justOne:1 } )
Wiadomość wynikowa:
WriteResult({ "nUsunięto" :1 })
Teraz uruchommy to samo zapytanie, aby zobaczyć, które dokumenty pozostały:
db.muscians.find( { urodzony:{ $lt:1950 } } )
Wyniki:
{ "_id" :3, "name" :"Roger Glover", "instrument" :"Bass", "born" :1945 }{ "_id" :5, "name" :"Don Airey", " instrument" :"Klawiatura", "ur" :1948 }
Usuń wszystkie dokumenty w kolekcji
Możesz usunąć wszystkie dokumenty w kolekcji, po prostu pomijając dowolne kryteria filtrowania.
Usuńmy wszystkie dokumenty w artystach kolekcja:
db.artists.remove({})
Wiadomość wynikowa:
WriteResult({ "nUsunięto" :8 })
Jeśli otrzymasz Błąd:usuń wymaga zapytania błąd, sprawdź, czy nie zapomniałeś dodać nawiasów klamrowych. Nadal musisz je uwzględnić.