В MongoDB db.collection.remove()
метод премахва документи от колекция. С други думи, изтрива ги.
collection
част е името на колекцията, от която да премахнете документите.
Можете да изтриете всички документи, някои документи или един документ според изискванията.
Премахване на всички документи
В този пример премахваме всички документи от колекция, наречена employees
:
db.employees.remove({})
Резултат:
WriteResult({ "nRemoved" : 5 })
Резултатът ни показва, че са премахнати пет документа.
Премахване на избраните документи
В този пример премахваме само някои документи.
Първо, нека попълним отново колекцията на нашите служители:
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 }
])
Сега нека премахнем всички служители, които печелят повече от 80 000 годишно.
db.employees.remove({ "salary": { $gt: 80000 } })
Резултат:
WriteResult({ "nRemoved" : 2 })
Този път бяха премахнати само два документа.
Нека да разгледаме колекцията.
db.employees.find()
Резултат:
{ "_id" : 1, "name" : "Sandy", "salary" : 55000 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 4, "name" : "Chris", "salary" : 45000 }
Както се очакваше, двамата с най-високо заплащане напуснаха компанията.
Премахване на един документ
Има няколко начина да премахнете един документ от колекция. Методът, който използвате, ще зависи от това, което трябва да направите.
Можете да:
- Премахване на конкретен документ
- Използвайте
justOne
параметър
Премахване на конкретен документ
Ако трябва да премахнете конкретен документ, можете да посочите _id
на документа стойност, за да премахнете този конкретен документ.
Така че, ако искаме да премахнем да речем Фриц от горната колекция, бихме могли да посочим неговия _id
стойност на 3
. Като това:
db.employees.remove({ "_id": 3 })
Резултат:
WriteResult({ "nRemoved" : 1 })
И нека проверим колекцията отново:
db.employees.find()
Резултат:
{ "_id" : 1, "name" : "Sandy", "salary" : 55000 } { "_id" : 4, "name" : "Chris", "salary" : 45000 }
Както се очакваше, Фриц вече изчезна.
Използвайте justOne
Параметър
Като алтернатива можете да използвате justOne
параметър за ограничаване на премахването само до един документ. Това изтрива първия документ, който отговаря на критериите за изтриване.
За да демонстрираме тази точка възможно най-ясно, нека премахнем всички останали документи от колекцията и след това да я попълним отново:
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 }
])
Добре, така че знаем, че в нашата колекция има пет документа.
Нека сега използваме justOne
параметър за премахване на един документ.
db.employees.remove({}, "justOne: true")
Резултат:
WriteResult({ "nRemoved" : 1 })
И нека проверим колекцията, за да видим кой документ е изтрит.
db.employees.find()
Резултат:
{ "_id" : 2, "name" : "Sarah", "salary" : 128000 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 4, "name" : "Chris", "salary" : 45000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 }
Както се очакваше, първият документ беше изтрит.
justOne
параметърът също има друг синтаксис. Можете също да го използвате в документ. Ще трябва да направите това, ако искате да предадете други аргументи на метода.
Ето един пример.
db.employees.remove(
{},
{
justOne: true,
writeConcern: { w: "majority", wtimeout: 3000 },
collation: { locale: "de", strength: 1 }
}
)
Резултат:
WriteResult({ "nRemoved" : 1 })
И нека да разгледаме отново колекцията
db.employees.find()
Резултат:
{ "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 4, "name" : "Chris", "salary" : 45000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 }
Както се очакваше, следващият документ беше изтрит.
Повече информация
Вижте документацията на MongoDB за повече информация.