Overview
En esta guía, puedes aprender cómo usar la librería MongoDB para PHP para eliminar documentos de una colección de MongoDB realizando operaciones de eliminación.
Una operación de borrado remueve uno o más documentos de una colección de MongoDB. Puedes realizar una operación de eliminación utilizando los métodos MongoDB\Collection::deleteOne() o MongoDB\Collection::deleteMany().
Datos de muestra
Los ejemplos de esta guía utilizan la colección restaurants en la base de datos sample_restaurants de los conjuntos de datos de muestra de Atlas. Para acceder a esta colección desde tu aplicación PHP, instancia un MongoDB\Client que se conecte a un clúster Atlas y asigna el siguiente valor a tu variable $collection:
$collection = $client->sample_restaurants->restaurants;
Para saber cómo crear una implementación gratuita de MongoDB y cargar los conjuntos de datos de ejemplo, consulta la guía MongoDB Primeros Pasos.
Operaciones de borrar
Puede realizar operaciones de eliminación utilizando los siguientes métodos:
MongoDB\Collection::deleteOne()que elimina el primer documento que coincida con los criterios de búsquedaMongoDB\Collection::deleteMany(), que borra todos los documentos que cumplen con los criterios de búsqueda
Cada método de eliminación requiere un documento de filtro de query, que especifica los criterios de búsqueda para determinar qué documentos seleccionar para su eliminación. Para obtener más información sobre los filtros de query, consulta la sección Documentos de Filtros de Query en el manual del MongoDB Server.
Borrar un documento
El siguiente ejemplo usa el método deleteOne() para remover un documento en la colección restaurants que tiene un valor name de 'Ready Penny Inn':
$collection->deleteOne(['name' => 'Ready Penny Inn']);
Borra varios documentos
El siguiente ejemplo utiliza el método deleteMany() para remover todos los documentos en la colección restaurants que tienen un valor borough de 'Brooklyn':
$collection->deleteMany(['borough' => 'Brooklyn']);
Modificar la operación de eliminación
Puedes modificar el comportamiento de los métodos MongoDB\Collection::deleteOne() y MongoDB\Collection::deleteMany() pasando un arreglo que especifique los valores de opciones como parámetro. La siguiente tabla describe las opciones que puedes establecer en el arreglo:
Opción | Descripción |
|---|---|
| Especifica el tipo de intercalación de lenguaje que se debe usar al comparar cadenas. Para aprender más, consulte la sección Intercalación de esta página. |
| Establece el nivel de confirmación de escritura (write concern) para la operación. Esta opción utiliza por defecto el nivel de confirmación de escritura (write concern) de la colección. Para obtener más información, consulta nivel de confirmación de escritura (write concern) en el manual de MongoDB Server. |
| Obtiene o define el índice para escanear documentos. Para obtener más información, consulta la instrucción de sugerencia en el manual del MongoDB Server. |
| Especifica un documento con una lista de valores para mejorar la legibilidad de la operación. Los valores deben ser expresiones constantes o cerradas que no hagan referencia a campos de documentos. Para obtener más información, consulta la instrucción let en el manual de MongoDB Server. |
| Especifica la sesión del cliente para asociarla con la operación. Para obtener más información, consulta Sesión en el manual de MongoDB Server. |
| Anexa un comentario a la operación. Para obtener más información, consulta la guía sobre los campos del comando borrar en el manual del MongoDB Server. |
Intercalación
Para especificar una intercalación para tu operación, pasa un parámetro arreglo $options que establezca la opción collation en el método de la operación. Asigna la opción collation a un arreglo que configure las reglas de intercalación.
La siguiente tabla describe los campos que se pueden configurar para la intercalación:
Campo | Descripción |
|---|---|
| (Obligatorio) Especifica la configuración regional de Componentes Internacionales para Unicode (ICU). Para obtener una lista de las configuraciones regionales compatibles, consulte Configuraciones regionales de intercalación y parámetros predeterminados en el manual del servidor MongoDB. |
| (Opcional) Especifica si se debe incluir la comparación de mayúsculas y minúsculas. |
| (Opcional) Especifica el orden de clasificación de las diferencias entre casos durante las comparaciones de nivel terciario. |
| (Opcional) Especifica el nivel de comparación a realizar, tal como se define en la documentación de la UCI. |
| (Opcional) Especifica si el driver compara las strings numéricas como números. |
| (Opcional) Especifica si la librería considera los espacios en blanco y la puntuación como caracteres base a los efectos de la comparación. |
| (Opcional) Especifica qué caracteres considera la biblioteca ignorables cuando el |
| (Opcional) Especifica si las cadenas que contienen diacríticos se ordenan desde el final de la cadena hacia el principio. |
Para obtener más información sobre la intercalación y los posibles valores de cada campo, consulta la entrada Collation en el manual del servidor de MongoDB.
Ejemplo
El siguiente ejemplo llama al método deleteMany() para borrar todos los documentos en la colección restaurants que tengan un valor name que contenga la string 'Mongo'. También establece la opción comment en un parámetro de arreglo para añadir un comentario a la operación:
$collection->deleteMany( ['name' => new MongoDB\BSON\Regex('Mongo')], ['comment' => 'Deleting Mongo restaurants'], );
Nota
Si sustituyes el método deleteMany() por deleteOne() en el ejemplo anterior, la librería borra sólo el primer documento que tiene un valor name que contiene 'Mongo'.
Valor de retorno
Los métodos MongoDB\Collection::deleteOne() y MongoDB\Collection::deleteMany() devuelven un objeto MongoDB\DeleteResult. Esta clase contiene las siguientes funciones miembro:
isAcknowledged()que devuelve un valor booleano que indica si la operación fue reconocida.getDeletedCount()), que devuelve el número de documentos eliminados. Si no se reconoció la operación de guardado, este método arroja un error.
Si el filtro de query no coincide con ningún documentos, el driver no borra ningún documentos y getDeletedCount() devuelve 0.
Ejemplo
El siguiente ejemplo llama al método deleteMany() para eliminar documentos que tienen un valor de cuisine de 'Greek'. Luego, llama a la función nodo getDeletedCount() para imprimir el número de documentos eliminados:
$result = $collection->deleteMany(['cuisine' => 'Greek']); echo 'Deleted documents: ', $result->getDeletedCount(), PHP_EOL;
Deleted documents: 111
Documentación de la API
Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API: