MongoCollection::remove
(PECL mongo >=0.9.0)
MongoCollection::remove — Удаление записей из коллекции
Описание
$criteria
= array()
, array $options
= array()
) : bool|arrayСписок параметров
-
criteria
-
Критерии запроса для удаления из документа
-
options
-
Массив опций для операции удаления. В данный момент доступны следующие опции:
"w"
Смотрите Контроль записи. Значение по умолчанию для MongoClient является
1
.-
"justOne"
Задайте как
true
для удаления тьолько одного элемента. Если задать какfalse
, либо пропустить, то будут удалены все документы, удовлетворяющие критерию. "fsync"
Булево, по умолчанию
false
. Если включено журналирование, то работает также как и"j"
. Если журналирование не включено, то операции записи блокируются пока не будут синхронизированы с файлами на жестком диске. Еслиtrue
, то применяется подтвержденная вставка и эта опция переопределяет опцию"w"
в значение0
.Замечание: Если журналирование включено, то пользователю настоятельно рекомендуется использовать опцию
"j"
вместо"fsync"
. Не используйте"fsync"
и"j"
одновременно,так как это может привести к ошибке."j"
Булево, по умолчанию
false
. Блокирует операции записи пока они не будут синхронизированы с журналом на диске. Еслиtrue
, то применяется подтвержденная вставка и эта опция переопределяет опцию"w"
в значение0
.Замечание: Если применяется эта опция и журналирование отключено, то MongoDB 2.6+ выбросит ошибку и прервет запись; старые версии сервера просто игнорируют эту опцию.
"socketTimeoutMS"
Эта опция определяет время в миллисекундах для общения в socket. Если сервер не ответил за отведенное время, то будет брошено исключение MongoCursorTimeoutException, и не будет никакой возможности определить произвел ли сервер запись или нет. Значение
-1
используется для постоянно отключения этой функции. Значением по умолчанию для MongoClient является30000
(30 секунд)."w"
Смотрите Контроль записи. Значение по умолчанию для MongoClient является
1
."wTimeoutMS"
Эта опция определяет лимит времени в миллисекундах для подтверждения контроля записи. Она применима только, если
"w"
больше1
, так как ограничение времени относится к репликации. Если контроль записи не подтвержден за отведенное время, то будет выброшено исключение MongoCursorException. Значение0
для постоянного отключения. Значением по умолчанию для MongoClient является10000
(десять секунд).
Следующие опции считаются устаревшими и не рекомендованы к использованию:
"safe"
Устаревшая опция. Используйте опцию
"w"
контроля записи."timeout"
Устаревший псевдоним для
"socketTimeoutMS"
."wtimeout"
Устаревший псевдоним для
"wTimeoutMS"
.
Возвращаемые значения
Возвращает массив, содержащий статус удаления, если установлена опция
"w"
. Иначе возвращает true
Поля этого массива описаны в документации для функции MongoCollection::insert().
Ошибки
Исключение MongoCursorException бросается, если установлена опция "w"
и не прошла запись.
Исключение MongoCursorTimeoutException бросается, если опция "w"
установлена в значение больше одного и операция заняла больше, чем MongoCursor::$timeout миллисекунд. При этом операция на сервере не прерывается, так как это ограничение времени работает на клиентской стороне. Операция в миллисекундах в MongoCollection::$wtimeout.
Список изменений
Версия | Описание |
---|---|
PECL mongo 1.5.0 |
Добавлена опция
Добавлена опция
Ошибка уровня |
PECL mongo 1.3.4 | Добавлена опция "wtimeout" . |
PECL mongo 1.3.0 |
Добавлена опция
Параметр |
PECL mongo 1.2.11 |
Ошибка уровня E_DEPRECATED если
options скалярного типа.
|
PECL mongo 1.2.0 | Добавлена опция "timeout" . |
PECL mongo 1.0.11 |
Ошибки сброса соединения на "не мастере" если установлена "safe" .
|
PECL mongo 1.0.9 |
Добавлена возможность передавать целые числа в опцию
Добавлена опция
Тип возвращаемого значения изменен на массив, содержащий информацию об ошибке
если установлена опция |
PECL mongo 1.0.5 |
Второй парамент теперь принимает массив опция. До версии 1.0.5 второй параметр
принимал логическое значение, устанавливавшее опцию "safe" .
|
Примеры
Пример #1 Пример использования MongoCollection::remove() с опцией justOne
<?php
$radioactive = $db->radioactive;
// Посчитаем, сколько у нас еще плутония
$remaining = $radioactive->count(array('type' => 94));
$halflife = $remaining/2;
// удалим половину
while ($halflife > 0) {
$radioactive->remove(array('type' => 94), array("justOne" => true));
$halflife--;
}
?>
Смотрите также
- MongoCollection::insert() - Вставляет документ в коллекцию
- MongoCollection::update() - Обновляет записи на основе заданных критериев
- MongoDB core docs on » remove.