Overview
En esta guía, puedes aprender cómo borrar documentos de una colección de MongoDB utilizando la integración de Laravel. Utiliza operaciones de borrado para remover datos de tu base de datos MongoDB.
Esta sección proporciona ejemplos de las siguientes operaciones de borrado:
Modelo muestra
Las operaciones en esta guía hacen referencia a la siguiente clase de modelo 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']; }
Tip
El atributo $fillable permite utilizar la asignación masiva de Laravel para operaciones de inserción. Para obtener más información sobre la asignación masiva, consulta Personalizar la asignación masiva en la documentación de la Clase de Modelo Eloquent.
El atributo $casts indica a Laravel que debe convertir los atributos a tipos de datos comunes. Para seguir aprendiendo, consulta Conversión de atributos en la documentación de Laravel.
Borrar un documento
Puedes borrar un documento de las siguientes maneras:
Llama al método
$model->delete()en una instancia del modelo.Encadene métodos para recuperar y eliminar una instancia de un modelo llamando al método
delete().Llama al método
Model::destroy($id)en el modelo, pasándole el valor_iddel documento que debe borrarse.
borrar() Método
El siguiente ejemplo muestra cómo borrar un documento llamando a $model->delete() en una instancia del modelo:
$concert = Concert::first(); $concert->delete();
Cuando el método delete() tiene éxito, la operación devuelve el número de documentos eliminados.
Si la parte de recuperar de la llamada no coincide con ningún documento de la colección, la operación retorna 0.
El siguiente ejemplo muestra cómo encadenar llamadas para recuperar el primer documento que coincida y borrarlo:
Concert::where('venue', 'Carnegie Hall') ->limit(1) ->delete();
Nota
La llamada orderBy() ordena los resultados por el campo _id para garantizar un orden de clasificación consistente. Para obtener más información sobre la ordenación en MongoDB, consulte la entrada de glosario Orden natural en el manual del servidor.
Cuando el método delete() tiene éxito, devuelve la cantidad de documentos borrados.
Si el método where() no coincide con ningún documento, el método delete() devuelve 0.
destroy() Método
El siguiente ejemplo muestra cómo borrar un documento pasando el valor de su _id al método Model::destroy($id):
$id = 'MSG-0212252000'; Concert::destroy($id);
Cuando el método destroy() tiene éxito, devuelve la cantidad de documentos borrados.
Si el valor _id no coincide con ningún documento, el método destroy() devuelve 0.
Borra varios documentos
Puedes borrar varios documentos de las siguientes maneras:
Llama al método
Model::destroy($ids), pasando una lista de los IDs de los documentos o instancias de modelo que se van a borrar.Encadena métodos para recuperar un objeto de colección de Laravel que haga referencia a múltiples objetos y borrarlos llamando al método
delete().
destroy() Método
El siguiente ejemplo muestra cómo borrar un documento pasando un arreglo de valores de _id, representados por $ids, al método destroy():
$ids = [3, 5, 7, 9]; Concert::destroy($ids);
Tip
El rendimiento del método destroy() disminuye cuando se le pasan listas grandes. Para un mejor rendimiento, utilice Model::whereIn('id', $ids)->delete() en su lugar.
Cuando el método destroy() tiene éxito, devuelve la cantidad de documentos borrados.
Si los valores _id no coinciden con ningún documento, el método destroy() devuelve 0.
borrar() Método
El siguiente ejemplo muestra cómo encadenar llamadas para recuperar documentos que coincidan y borrarlos:
Concert::where('ticketsSold', '>', 7500) ->delete();
Cuando el método delete() tiene éxito, devuelve la cantidad de documentos borrados.
Si el método where() no coincide con ningún documento, el método delete() devuelve 0.
Ejemplos totalmente ejecutables
Las siguientes secciones proporcionan ejemplos de código totalmente ejecutables que demuestran cómo borrar documentos utilizando la integración de Laravel. Estos ejemplos utilizan la colección sample_mflix.movies de los conjuntos de datos de muestra de Atlas.
Tip
Puedes ejecutar los ejemplos completos desde tu propia aplicación Laravel o desde la aplicación my-app creada en el tutorial Introducción. Los ejemplos utilizan la clase de modelo Movie.php creada en este tutorial para demostrar operaciones en la colección de MongoDB movies. Para ejecutar la operación, puedes copiar el código de muestra en un endpoint del controlador en tu aplicación Laravel.
Para ver la salida esperada de la operación, puedes agregar una ruta web a tu aplicación que llame a la función controladora y devuelva el resultado a una interfaz web.
Borrar un documento
Seleccione de las siguientes pestañas Eloquent y Query Builder para ver ejemplos de cada sintaxis de query correspondiente:
Este ejemplo realiza las siguientes acciones:
Utiliza el modelo
MovieEloquent para representar la colecciónmoviesen la base de datossample_mflixElimina un documento de la colección
moviesque coincide con un filtro de queryImprime el número de documentos borrados.
El ejemplo llama a los siguientes métodos en el modelo Movie:
where():: Coincide con los documentos en los que el valor del campotitlees"Quiz Show"limit(): Recupera solo el primer documento coincidentedelete()Elimina el documento recuperado
$deleted = Movie::where('title', 'Quiz Show') ->limit(1) ->delete(); echo 'Deleted documents: ' . $deleted;
Deleted documents: 1
Este ejemplo realiza las siguientes acciones:
Accede a la colección
moviesllamando al métodotable()desde la fachadaDBElimina un documento de la colección
moviesque coincide con un filtro de queryImprime el número de documentos borrados.
El ejemplo llama a los siguientes métodos para crear query:
where():: Coincide con los documentos en los que el valor del campotitlees"Quiz Show"limit(): Recupera solo el primer documento coincidentedelete()Elimina el documento recuperado
$deleted = DB::table('movies') ->where('title', 'Quiz Show') ->limit(1) ->delete(); echo 'Deleted documents: ' . $deleted;
Deleted documents: 1
Borra varios documentos
Seleccione de las siguientes pestañas Eloquent y Query Builder para ver ejemplos de cada sintaxis de query correspondiente:
Este ejemplo realiza las siguientes acciones:
Utiliza el modelo
MovieEloquent para representar la colecciónmoviesen la base de datossample_mflixElimina documentos de la colección
moviesque coinciden con un filtro de queryImprime el número de documentos borrados.
El ejemplo llama a los siguientes métodos en el modelo Movie:
where()Coincide con los documentos en los que el valor del campoyeares menor o igual que1910.delete(): Elimina los documentos que coinciden y devuelve el número de documentos eliminados con éxito
$deleted = Movie::where('year', '<=', 1910) ->delete(); echo 'Deleted documents: ' . $deleted;
Deleted documents: 7
Este ejemplo realiza las siguientes acciones:
Accede a la colección
moviesllamando al métodotable()desde la fachadaDBElimina documentos de la colección
moviesque coinciden con un filtro de queryImprime el número de documentos borrados.
El ejemplo llama a los siguientes métodos para crear query:
where()Coincide con los documentos en los que el valor del campoyeares menor o igual que1910.delete(): Elimina los documentos que coinciden y devuelve el número de documentos eliminados con éxito
$deleted = DB::table('movies') ->where('year', '<=', 1910) ->delete(); echo 'Deleted documents: ' . $deleted;
Deleted documents: 7
Información Adicional
Para conocer las funcionalidades de Laravel disponibles en la integración de Laravel que modifican el comportamiento de borrado, consulta las siguientes secciones:
Borrado suave, que te permite marcar los documentos como eliminados en lugar de removerlos de la base de datos
Pruning, que te permite definir condiciones que califican un documento para su eliminación automática
Para aprender cómo insertar documentos en una colección MongoDB, consulta la guía Insertar documentos.