MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB - Excluir um documento


No MongoDB, você pode excluir documentos usando um dos três métodos.

O MongoDB fornece três métodos para excluir documentos:
  • db.collection.deleteOne()
  • db.collection.deleteMany()
  • db.collection.remove()

O db.collection.deleteOne() Método


O db.collection.deleteOne() exclui apenas um documento, mesmo que mais de um documento corresponda aos critérios.

Aqui está um exemplo do db.collection.deleteOne() método para excluir um único documento.

Primeiro, vamos executar uma consulta que retorna vários resultados:
db.artists.find( { artistname: { $in: [ "The Kooks", "Gang of Four", "Bastille" ] } } )

Resultados:
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }

OK, então sabemos que existem três documentos que atendem a esse critério.

Agora vamos usar exatamente os mesmos critérios de filtragem para nosso db.collection.deleteOne() método:
db.artists.deleteOne( { artistname: { $in: [ "The Kooks", "Gang of Four", "Bastille" ] } } )

Mensagem resultante:
{ "acknowledged" : true, "deletedCount" : 1 }

Portanto, apenas um documento foi excluído, embora três documentos correspondessem aos critérios.

Vamos executar o find() consulte novamente para ver quais documentos permanecem:
db.artists.find( { artistname: { $in: [ "The Kooks", "Gang of Four", "Bastille" ] } } )

Resultados:
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }

O db.collection.deleteMany() Método


O db.collection.deleteMany() O método exclui todos os documentos que correspondem aos critérios.

Então vamos executar o db.collection.deleteMany() método com exatamente os mesmos critérios do nosso exemplo anterior. Lembre-se, dois registros permanecem. Vamos ver se db.collection.deleteMany() exclui ambos:
db.artists.deleteMany( { artistname: { $in: [ "The Kooks", "Gang of Four", "Bastille" ] } } )

Mensagem resultante:
{ "acknowledged" : true, "deletedCount" : 2 }

Assim, os dois registros restantes foram excluídos.

O db.collection.remove() Método


O db.collection.remove() O método exclui um único documento ou todos os documentos que correspondem aos critérios especificados.

Aqui, excluímos todos os documentos em que o nome do artista é "AC/DC".
db.artists.remove( { artistname: "AC/DC" } )

Resultados:
WriteResult({ "nRemoved" : 1 })

Neste caso, há apenas um AC/DC :)

O justOne Opção


Você pode usar o justOne parâmetro para limitar a operação de remoção a apenas um documento (assim como usar db.collection.deleteOne() ).

Aqui está um exemplo.

Primeiro, vamos executar uma consulta que retorna vários documentos:
db.musicians.find( { born: { $lt: 1950 } } )

Resultados:
{ "_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 }

Agora vamos excluir um desses registros usando o justOne opção. Novamente, usaremos exatamente os mesmos critérios de filtragem:
db.musicians.remove( { born: { $lt: 1950 } }, { justOne: 1 } )

Mensagem resultante:
WriteResult({ "nRemoved" : 1 })

Agora vamos executar a mesma consulta para ver quais documentos permanecem:
db.musicians.find( { born: { $lt: 1950 } } )

Resultados:
{ "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 }
{ "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 }

Excluir todos os documentos em uma coleção


Você pode excluir todos os documentos de uma coleção simplesmente omitindo qualquer critério de filtragem.

Vamos excluir todos os documentos no artistas coleção:
db.artists.remove( {} )

Mensagem resultante:
WriteResult({ "nRemoved" : 8 })

Se você receber um Erro:remover precisa de uma consulta erro, verifique se você não esqueceu de incluir as chaves. Você ainda precisa incluí-los.