MongoCollection::remove

(PECL mongo >=0.9.0)

MongoCollection::removeEliminar registros de esta colección

Descripción

public MongoCollection::remove ([ array $criteria = array() [, array $options = array() ]] ) : bool|array

Parámetros

criteria

Criterios de consulta para los documentos a borrar.

options

Un array de opciones para la operación de eliminación. Las opciones actualmente disponibles son:

  • "w"

    Véase WriteConcerns. El valor predeterminado de MongoClient es 1.

  • "justOne"

    Especificar TRUE para limitar la eliminación a sólo un documento. Si es FALSE o se omite, se borrarán todos los documentos que coincidan con los criterios.

  • "fsync"

    Booleano, cuyo valor predeterminado es FALSE. Si el registro en el diario está habilitado, funciona exactamente igual que "j". Si no está habilidato, la operación de escriturá bloqueará hasta que se sincronice con los ficheros de la base de datos del disco. Si es TRUE, implica una inserción reconocida y sobrescribirá el ajuste "w" a 0.

    Nota: Si está habilitada, se recomienda a los usuarios usar la opción "j" en lugar de "fsync". No use "fsync" y "j" simultáneamente, ya que resultará en un error.

  • "j"

    Booleano, cuyo valor predeterminado es FALSE. Fuerza a la operación de escritura a bloquear hasta que sea sincronizada con el diario del disco. Si es TRUE, implica una escritura reconocida y sobrescribirá el ajuste "w" a 0.

    Nota: Si se usa esta opción y el registro en el diario está deshabilitado, MongoDB 2.6+ emitirá un error y la escritura fallará; las versiones más antiguas del servidor simplemente ignoran esta opción.

  • "socketTimeoutMS"

    Esta opción especifica el tiempo límite, en milisegundos, para las comunicaciones con socket. Si el servidor no responde en el periodo especificado, se lanzará una MongoCursorTimeoutException y no habrá forma de determinar si el servidor manejó realmente la escritura o no. Se podría especificar un valor de -1 para bloquear indefinidamente. El valor predeterminado para MongoClient es 30000 (30 segundos).

  • "w"

    Véase WriteConcerns. El valor predeterminado de MongoClient es 1.

  • "wTimeoutMS"

    Esta opción especifica el tiempo límite, en milisegundos, para el reconocimiento de un asunto de escritura. Solamente es aplicable cuando "w" sea mayor que 1, ya que el tiempo de espera está relacionado con la replecación. Si el asunto de escritura no se satisface dentro del tiempo límite, se lanzará una MongoCursorException. Se puede especificar un valor de 0 para bloquear indefinidamente. El valor predeterminado es 10000 (diez segundos).

Las siguientes opciones están obsoletas y no deberían usarse más:

  • "safe"

    Obsoleto. Use la opción w de los asuntos de escritura.

  • "timeout"

    Alias obsoleto de "socketTimeoutMS".

  • "wtimeout"

    Alias obsoleto de "wTimeoutMS".

Valores devueltos

Devuelve un array que contiene el estado de la eliminación si está establecida la opción "w". De lo contrario, devuelve TRUE.

Los campos del array de estado están descritros en la documentación de MongoCollection::insert().

Errores/Excepciones

Lanza una MongoCursorException si la opción "w" está establecida y la escritura falla.

Lanza una MongoCursorTimeoutException si la opción "w" está establecida a un valor mayor que uno y la operación toma más de MongoCursor::$timeout milisegundos en completarse. Esto no pondrá fin a la operación en el servidor, es un tiempo límite del lado del cliente. La operación en MongoCollection::$wtimeout es milisegundos.

Historial de cambios

Versión Descripción
1.5.0

se añadió la opción "wTimeoutMS", la cual remplaza a "wtimeout". Emite un error de nivel E_DEPRECATED cuando se usa "wtimeout".

Se añadió la opción "socketTimeoutMS", la cual remplza a "timeout". Emite un error de nivel E_DEPRECATED cuando se usa "timeout".

Emite un error de nivel E_DEPRECATED al usar "safe".

1.3.4 Se añadió la opción "wtimeout".
1.3.0

Se añadió la opción "w".

El parámetro options ya no acepta un valor booleano que indique "justOne". En su lugar, ahora se debe hacer con array('justOne' => true).

1.2.11 Emite un error de nivel E_DEPRECATED cuando options es de tipo scalar.
1.2.0 Se añadió la opción "timeout".
1.0.11 Se desconcecta cuando ocurren errores "not master" si "safe" está establecido.
1.0.9

Se añadió la capacidad de pasar números enteros a la opción "safe", la cual anteriomente sólo aceptaba valores booleanos.

Se añadío la opción "fsync".

Es tipo devuelto se cambio para que fuera un array que contuviera la información del error si se usaba la opción "safe". De otro modo, se devolvía un valor booleano como antes.

1.0.5 Cambiado el segundo parámetro a un array de opciones. Antes de 1.0.5, el segundo parámetro era un booleano indicando la opción "safe".

Ejemplos

Ejemplo #1 Ejemplo de MongoCollection::remove() con justOne

<?php

$radioactivo 
$db->radioactivo;

// contar cuánto plution queda
$restante $radioactivo->count(array('type' => 94));

$vidamedia $restante/2;

// eliminar la mitad
while ($vidamedia 0) {
    
$radioactivo->remove(array('type' => 94), array("justOne" => true));
    
$vidamedia--;
}

?>

Ver también

add a note add a note

User Contributed Notes 2 notes

up
16
David Winter
14 years ago
To remove a document based on its ID, you need to ensure that you pass the ID as a MongoID object rather than just a string:

<?php
$id
= '4b3f272c8ead0eb19d000000';

// will not work:
$collection->remove(array('_id' => $id), true);

// will work:
$collection->remove(array('_id' => new MongoId($id)), true);
?>
up
8
konstantin718 at gmail dot com
11 years ago
If you try to remove a document that doesn't exist, remove() won't throw an exception.

Even if 'w' is set to 1, remove() will return an array similar to this:

Array ( [n] => 0 [connectionId] => 10726 [err] => [ok] => 1 )

So, in order to see if a remove() was really successful, you need to look at [n] key.  If it's 0, that means the remove() did not remove any documents.

If remove() is successful, [n] will be > 0.
To Top