Visão geral
Neste guia, você pode aprender como excluir documentos de uma coleção MongoDB usando a Integração Laravel. Use as operações de exclusão para remover dados do seu banco de dados MongoDB .
Esta seção fornece exemplos das seguintes operações de exclusão:
Modelo de amostra
As operações deste guia referenciam a seguinte classe de modelo do Eloquent :
namespace App\Models; use MongoDB\Laravel\Eloquent\Model; class Concert extends Model { protected $connection = 'mongodb'; protected $fillable = ['performer', 'venue', 'genres', 'ticketsSold', 'performanceDate']; protected $casts = ['performanceDate' => 'datetime']; }
Dica
O atributo $fillable permite utilizar a atribuição em massa Laravel para inserir operações. Para saber mais sobre atribuição em massa, consulte Personalizar Atribuição de Massa na documentação da Classe de Modelo Eloquent.
O atributo $casts instrui o Laravel a converter atributos em tipos de dados comuns. Para saber mais, consulte Fundiçăo de atributos na documentação do Laravel.
Excluir um documento
Você pode excluir um documento das seguintes maneiras:
Ligue para o método
$model->delete()em uma instância do modelo.Métodos de cadeia para recuperar e excluir uma instância de um modelo chamando o método
delete().Ligue para o método
Model::destroy($id)no modelo, passando o valor_iddo documento a ser excluído.
Método delete()
O exemplo a seguir mostra como excluir um documento chamando $model->delete() em uma instância do modelo:
$concert = Concert::first(); $concert->delete();
Quando o método delete() é bem-sucedido, a operação retorna o número de documentos excluídos.
Se a parte de recuperação da chamada não corresponder a nenhum documento na coleção, a operação retornará 0.
O exemplo a seguir mostra como encadear chamadas para recuperar o primeiro documento correspondente e excluí-lo:
Concert::where('venue', 'Carnegie Hall') ->limit(1) ->delete();
Observação
A chamada orderBy() classifica os resultados pelo campo _id para garantir uma ordem de classificação consistente. Para saber mais sobre classificação no MongoDB, consulte a entrada do glossário de ordem natural no manual do servidor MongoDB.
Quando o método delete() é bem-sucedido, ele retorna o número de documentos excluídos.
Se o método where() não corresponder a nenhum documento, o método delete() retornará 0.
Método destruir()
O exemplo a seguir mostra como excluir um documento passando o valor de seu valor _id para o método Model::destroy($id):
$id = 'MSG-0212252000'; Concert::destroy($id);
Quando o método destroy() é bem-sucedido, ele retorna o número de documentos excluídos.
Se o valor _id não corresponder a nenhum documento, o método destroy() retornará 0.
Excluir vários documentos
Você pode excluir vários documentos das seguintes maneiras:
Chame o método
Model::destroy($ids), passando uma lista das IDs dos documentos ou instâncias de modelo a serem excluídas.Métodos de cadeia para recuperar um objeto de coleção do Laravel que faz referência a vários objetos e excluí-los chamando o método
delete().
Método destruir()
O exemplo a seguir mostra como excluir um documento passando uma array de valores _id, representados por $ids, para o método destroy():
$ids = [3, 5, 7, 9]; Concert::destroy($ids);
Dica
O desempenho do método destroy() é prejudicado quando são passadas listas grandes. Para melhor desempenho, use Model::whereIn('id', $ids)->delete() em vez disso.
Quando o método destroy() é bem-sucedido, ele retorna o número de documentos excluídos.
Se os valores de _id não corresponderem a nenhum documento, o método destroy() retornará 0.
Método delete()
O exemplo a seguir mostra como encadear chamadas para recuperar documentos correspondentes e excluí-los:
Concert::where('ticketsSold', '>', 7500) ->delete();
Quando o método delete() é bem-sucedido, ele retorna o número de documentos excluídos.
Se o método where() não corresponder a nenhum documento, o método delete() retornará 0.
Exemplos totalmente executáveis
As seções a seguir fornecem exemplos de código totalmente executáveis que demonstram como excluir documentos usando a Integração com o Laravel. Estes exemplos utilizam a sample_mflix.movies collection a partir do conjunto de dados de amostra do Atlas .
Dica
Você pode executar os exemplos completos em seu próprio aplicação Laravel ou a partir do my-app aplicação criado no tutorial de Introdução. Os exemplos usam a Movie.php classe de modelo criada neste tutorial para demonstrar operações na movies collection do MongoDB . Para executar a operação, você pode copiar o código de amostra para um endpoint do controlador em seu aplicação Laravel.
Para visualizar a saída esperada da operação, você pode adicionar uma rota web ao seu aplicação que chama a função do controlador e retorna o resultado para uma interface web.
Excluir um documento
Selecione a partir das seguintes abas Eloquent e Query Builder para visualizar exemplos para cada sintaxe de query correspondente:
Este exemplo executa as seguintes ações:
Utiliza o modelo
MovieEloquent para representar a coleção dosample_mflixmoviesbanco de dados doExclui um documento da collection
moviesque corresponde a um filtro de queryImprime o número de documentos excluídos
O exemplo chama os seguintes métodos no modelo Movie :
where(): corresponde a documentos em que o valor do campotitleé"Quiz Show"limit(): recupera somente o primeiro documento correspondentedelete(): exclui o documento recuperado
$deleted = Movie::where('title', 'Quiz Show') ->limit(1) ->delete(); echo 'Deleted documents: ' . $deleted;
Deleted documents: 1
Este exemplo executa as seguintes ações:
Acessos a coleção
movieschamando o métodotable()a partir da faseDBExclui um documento da collection
moviesque corresponde a um filtro de queryImprime o número de documentos excluídos
O exemplo chama os seguintes métodos de construtor de query:
where(): corresponde a documentos em que o valor do campotitleé"Quiz Show"limit(): recupera somente o primeiro documento correspondentedelete(): exclui o documento recuperado
$deleted = DB::table('movies') ->where('title', 'Quiz Show') ->limit(1) ->delete(); echo 'Deleted documents: ' . $deleted;
Deleted documents: 1
Excluir vários documentos
Selecione a partir das seguintes abas Eloquent e Query Builder para visualizar exemplos para cada sintaxe de query correspondente:
Este exemplo executa as seguintes ações:
Utiliza o modelo
MovieEloquent para representar a coleção dosample_mflixmoviesbanco de dados doExclui documentos da collection
moviesque correspondem a um filtro de queryImprime o número de documentos excluídos
O exemplo chama os seguintes métodos no modelo Movie :
where(): corresponde a documentos em que o valor do campoyearé menor ou igual a1910delete(): exclui os documentos correspondentes e retorna o número de documentos excluídos com êxito
$deleted = Movie::where('year', '<=', 1910) ->delete(); echo 'Deleted documents: ' . $deleted;
Deleted documents: 7
Este exemplo executa as seguintes ações:
Acessos a coleção
movieschamando o métodotable()a partir da faseDBExclui documentos da collection
moviesque correspondem a um filtro de queryImprime o número de documentos excluídos
O exemplo chama os seguintes métodos de construtor de query:
where(): corresponde a documentos em que o valor do campoyearé menor ou igual a1910delete(): exclui os documentos correspondentes e retorna o número de documentos excluídos com êxito
$deleted = DB::table('movies') ->where('year', '<=', 1910) ->delete(); echo 'Deleted documents: ' . $deleted;
Deleted documents: 7
Informações adicionais
Para saber mais sobre os recursos do Laravel disponíveis na Integração do Laravel que modificam o comportamento da exclusão, consulte as seguintes seções:
Exclusão suave, que permite marcar documentos como excluídos em vez de removê-los do banco de dados
Remoção, que permite definir condições que qualificam um documento para exclusão automática
Para saber como inserir documentos em uma coleção MongoDB, consulte o guia Inserir Documentos.