W MongoDB, jeśli chcesz usunąć dokument w powłoce mongo, możesz użyć:
db.collection.remove()
metodadelete
poleceniedb.collection.deleteOne()
metodadb.collection.deleteMany()
metoda
Ten artykuł zawiera przykłady każdego z nich.
db.collection.remove()
Metoda
db.collection.remove()
metoda usuwa (tj. usuwa) dokumenty z kolekcji. W razie potrzeby możesz usunąć wszystkie dokumenty, niektóre dokumenty lub pojedynczy dokument.
Oto przykład usuwania konkretnego dokumentu.
db.employees.remove({ "_id": 3 })
Wynik:
WriteResult({ "nRemoved" : 1 })
To usuwa dokument z _id
wartość 3
od employees
kolekcja.
Nie musi jednak pasować do jednego dokumentu. Kryteria filtrowania mogą pasować do wielu dokumentów, a nawet możesz pozostawić puste kryteria filtrowania, aby pasowały do wszystkich dokumentów (tj. Usuń wszystkie dokumenty).
Oto przykład usuwania wszystkich dokumentów:
db.employees.remove({})
Wynik:
WriteResult({ "nRemoved" : 5 })
Wynik pokazuje nam, że pięć dokumentów zostało usuniętych (więc kolekcja oczywiście zawierała pięć dokumentów, zanim usunęliśmy je wszystkie).
remove()
metoda akceptuje również justOne
parametr, aby ograniczyć usuwanie tylko do jednego dokumentu. Spowoduje to usunięcie pierwszego dokumentu, który spełnia kryteria usuwania.
Przykład:
db.employees.remove({}, "justOne: true")
Wynik:
WriteResult({ "nRemoved" : 1 })
W tym przypadku naszym kryterium filtrowania jest pusty dokument, a więc pasuje do wszystkich dokumentów w kolekcji. Jednak tylko jeden dokument jest usuwany, ponieważ używamy justOne: true
.
delete
Polecenie
delete
polecenie robi dokładnie to samo, co remove()
metoda. W rzeczywistości remove()
metoda używa polecenia usuwania.
Oto przykład usuwania określonego dokumentu za pomocą delete
polecenie.
db.runCommand(
{
delete: "employees",
deletes: [ { q: { _id: 4 }, limit: 1 } ]
}
)
Wynik:
{ "n" : 1, "ok" : 1 }
db.collection.deleteOne()
Metoda
db.collection.deleteOne()
metoda jest podobna do metody db.collection.remove()
z tą różnicą, że usuwa tylko jeden dokument z określonej kolekcji.
Akceptuje warunek filtra, podobnie jak db.collection.remove()
.
Przykład:
db.employees.deleteOne({ "_id": 4 })
Wynik:
{ "acknowledged" : true, "deletedCount" : 1 }
Ten usunięty pracownik numer 4.
Jeśli podasz szerszy filtr, który zwróci wiele dokumentów, usunie tylko pierwszy.
Na przykład poniższe polecenie usuwa pierwszy dokument w kolekcji, niezależnie od tego, ile dokumentów znajduje się w kolekcji:
db.employees.deleteOne({})
db.collection.deleteOne()
Metoda może być przydatną metodą, jeśli obawiasz się przypadkowego usunięcia wielu dokumentów. Większość dokumentów, które usunie, to jeden, więc jeśli popełnisz błąd „gruby palec”, nie usuniesz przypadkowo wszystkich dokumentów z kolekcji (chyba że w kolekcji jest tylko jeden dokument).
db.collection.deleteMany()
Metoda
db.collection.deleteMany()
metoda jest podobna do db.collection.deleteOne()
poza tym, że może usunąć wiele dokumentów.
Właściwie to prawdopodobnie bardziej przypomina remove()
, ponieważ może usunąć wiele dokumentów i jeden dokument (chociaż nie ma justOne
parametr taki jak remove()
tak).
Ta metoda może być przydatna, jeśli chcesz usunąć wszystkie dokumenty spełniające określone kryteria.
Przykład:
db.employees.deleteMany({ "salary": { $gt: 80000 } })
Wynik:
{ "acknowledged" : true, "deletedCount" : 2 }
Spowodowało to usunięcie wszystkich dokumentów, które mają salary
pole powyżej 80000. W tym przypadku pasowały tylko dwa dokumenty, ale mogła to być dowolna liczba.
Możesz także użyć db.collection.deleteMany()
aby usunąć wszystkie dokumenty z kolekcji.
Przykład:
db.employees.deleteMany({})
Wynik:
{ "acknowledged" : true, "deletedCount" : 5 }
W tym przypadku w kolekcji znajdowało się pięć dokumentów i wszystkie pięć zostały usunięte.
Więcej informacji
Powyższe metody akceptują również szereg opcjonalnych argumentów, takich jak writeConcern
i collation
.
deleteOne()
i deleteMany()
zaakceptuj także hint
argument.
Poniżej znajdują się łącza do dokumentacji MongoDB dla każdej metody/polecenia:
db.collection.remove()
delete
db.collection.deleteOne()
db.collection.deleteMany()