

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("5781d7f245re8c6b3ffb014d"), "artistname" : "The Kooks"} {"_id" : ObjectId("5781d7f245re8c6b3ffb014e"), "artistname" : "Bastille"} {"_id" : ObjectId("5781d7f245re8c6b3ffb014f"), "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("5781d7f568ef8c6b3ffb014e"), "artistname" : "Bastille" } { "_id" : ObjectId("5781d7f568ef8c6b3ffb014f"), "artistname" : "Gang of Four" }
Метод 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 })
Опция justOne
Вы можете использовать параметр justOne, чтобы ограничить операцию удаления только одним документом (так же, как с помощью db.collection.deleteOne()).
Вот пример.
Сначала запустим запрос, который возвращает несколько документов:
db.musicians.find( { born: { $lt: 1950 } } )
Результат:
{ "_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 }
Теперь мы удалим одну из этих записей, используя опцию justOne. Опять же, мы будем использовать те же критерии фильтрации:
db.musicians.remove( { born: { $lt: 1950 } }, { justOne: 1 } )
Результат:
WriteResult({ "nRemoved" : 1 })
Теперь давайте запустим тот же запрос, чтобы увидеть, какие документы остались:
{ "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 } { "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 }
Удалить все документы в коллекции
Вы можете удалить все документы в коллекции, просто пропустив критерии фильтрации.
Давайте удалим все документы из коллекции художников:
db.artists.remove( {} )
Результат:
WriteResult({ "nRemoved" : 8 })



Оставить комментарий