MongoDB — удалить документ

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("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 })

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

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

Ваш электронный адрес не будет опубликован.


*