В MongoDB можете да изтривате документи, като използвате един от трите метода.
MongoDB предоставя три метода за изтриване на документи:
db.collection.deleteOne()
db.collection.deleteMany()
db.collection.remove()
db.collection.deleteOne()
Метод
db.collection.deleteOne()
изтрива само един документ, дори ако повече от един документ отговарят на критериите.
Ето пример за db.collection.deleteOne()
метод за изтриване на един документ.
Първо, нека изпълним заявка, която връща множество резултати:
db.artists.find( { artistname:{ $in:[ "The Kooks", "Gang of Four", "Bastille" ] } } )
Резултати:
{ "_id" :ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" :"The Kooks" }{ "_id" :ObjectId("5781d7f248ef8c6b3ffb014e"), "Bastille":"Bastille" :("5781d7f248ef8c6b3ffb014f"), "artistname" :"Gang of Four" }
Добре, така че знаем, че има три документа, които отговарят на този критерий.
Сега нека използваме точно същите критерии за филтриране за нашия db.collection.deleteOne()
метод:
db.artists.deleteOne( { artistname:{ $in:[ "The Kooks", "Gang of Four", "Bastille" ] } } )
Резултатно съобщение:
{ "acknowledged" :true, "deletedCount" :1 }
Така че само един документ беше изтрит, въпреки че три документа отговаряха на критериите.
Нека изпълним find()
потърсете отново, за да видите кои документи остават:
db.artists.find( { artistname:{ $in:[ "The Kooks", "Gang of Four", "Bastille" ] } } )
Резултати:
{ "_id" :ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" :"Bastille" }{ "_id" :ObjectId("5781d7f248ef8c6b3ffb014f"), "Gartistname of F"> :
db.collection.deleteMany()
Метод
db.collection.deleteMany()
метод изтрива всички документи, които отговарят на критериите.Така че нека стартираме
db.collection.deleteMany()
метод със същите критерии като предишния пример. Не забравяйте, че остават два рекорда. Нека видим далиdb.collection.deleteMany()
изтрива и двете:db.artists.deleteMany( { artistname:{ $in:[ "The Kooks", "Gang of Four", "Bastille" ] } } )Резултатно съобщение:
{ "acknowledged" :true, "deletedCount" :2 }Така останалите два записа бяха изтрити.
db.collection.remove()
Метод
db.collection.remove()
метод изтрива един документ или всички документи, които отговарят на посочените критерии.Тук изтриваме всички документи, където името на изпълнителя е "AC/DC".
db.artists.remove( { artistname:"AC/DC" } )Резултати:
WriteResult({ "nRemoved" :1 })В този случай има само един AC/DC :)
justOne
ОпцияМожете да използвате
justOne
параметър за ограничаване на операцията за премахване само до един документ (точно както при използване наdb.collection.deleteOne()
).Ето един пример.
Първо, нека изпълним заявка, която връща множество документи:
db.musicians.find( { роден:{ $lt:1950 } } )Резултати:
{ "_id" :2, "name" :"Ian Paice", "instrument" :"Барабани", "born" :1948 }{ "_id" :3, "name" :"Roger Glover", " инструмент" :"Бас", "роден" :1945 }{ "_id" :5, "name" :"Дон Ейри", "инструмент" :"Клавиатурни", "роден" :1948 }Сега ще изтрием един от тези записи с помощта на
justOne
опция. Отново ще използваме същите критерии за филтриране:db.musicians.remove( { роден:{ $lt:1950 } }, { justOne:1 } )Резултатно съобщение:
WriteResult({ "nRemoved" :1 })Сега нека изпълним същата заявка, за да видим кои документи остават:
db.musicians.find( { роден:{ $lt:1950 } } )Резултати:
{ "_id" :3, "name" :"Roger Glover", "instrument" :"Бас", "born" :1945 }{ "_id" :5, "name" :"Don Airey", " инструмент" :"Клавиатури", "родени" :1948 }Изтриване на всички документи в колекция
Можете да изтриете всички документи в колекция, просто като пропуснете всички критерии за филтриране.
Нека изтрием всички документи в изпълнители колекция:
db.artists.remove( {} )Резултатно съобщение:
WriteResult({ "nRemoved" :8 })Ако получите Грешка:remove се нуждае от заявка грешка, проверете дали не сте забравили да включите фигурните скоби. Все още трябва да ги включите.