(mongodb >=1.0.0)
MongoDB\Driver\BulkWrite::update — Добавить операцию обновления в порцию
$filter
, array|object$newObj
, ?array$updateOptions
= null
): voidДобавляет операцию обновления в MongoDB\Driver\BulkWrite.
filter
(array|object)» Предикат запроса. Пустой предикат совпадёт со всеми элементами коллекции.
Замечание: При вычислении критериев запроса MongoDB сравнивает типы и значения в соответствии с собственными » правилами сравнения типов BSON, отличных от правил сравнения и приведения типов PHP. Когда указан специальный тип BSON, критерия запроса должна соответствовать классу BSON (т.е. использовать MongoDB\BSON\ObjectId для выборке по » ObjectId).
newObj
(array|object) Документ, содержащий операторы обновления (например, $set
), заменяющий документ (например, только выражения field:value
) или » конвейер агрегации.
updateOptions
Опция | Тип | Описание | Значение по умолчанию |
---|---|---|---|
arrayFilters | array | Массив документов фильтров, который определяет, какие элементы массива будут изменены для операции обновления в поле массива. Смотрите » Указывайте arrayFilters для операций обновления массива в руководстве MongoDB для получения дополнительной информации. Опция доступна с MongoDB 3.6+ и приведёт к исключению во время выполнения, если она указан для более старой версии сервера. | |
collation | array|object | » Сопоставление позволяет пользователям указывать специфичные для конкретного языка правила для сравнения строк, такие как реакцию на регистр букв и надстрочные знаки. Если задали сопоставление, то поле Если сопоставление не задали явно, но у коллекции определили сопоставление по умолчанию, то будет выбрано оно. Если нет ни того ни того, то MongoDB будет использовать простое бинарное сравнение строк. Эта опция доступна в MongoDB 3.4+ и, если будет использована для более старых версий, вызовет исключение во время исполнения. | |
hint | string|array|object | Индекс спецификации. Укажите либо имя индекса в виде строки, либо шаблон ключа индекса. Если указано, то система запросов будет рассматривать планы только с использованием индекса подсказок. Опция доступна с MongoDB 4.4+ и приведёт к исключению во время выполнения, если она указан для более старой версии сервера. | |
multi | bool | Обновить только первый найденный документ, если false или все подходящие документы при true . Эта опция не может быть true , когда newObj - заменяющий документ. | false |
upsert | bool | Если filter не соответствует существующему документу, будет вставлен новый документ. Документ будет создан из newObj , если он заменяющий документ (т.е. отсутствуют операторы обновления); в противном случае операторы в newObj будут применяться к filter для создания нового документа. | false |
Функция не возвращает значения после выполнения.
Версия | Описание |
---|---|
PECL mongodb 1.7.0 | Добавлена опция "hint" . |
PECL mongodb 1.6.0 | Параметр newObj теперь принимает конвейер агрегации. Требуется MongoDB 4.2+, для более старой версии сервера выбросит исключение во время выполнения. |
PECL mongodb 1.5.0 | Использование опции "arrayFilters" приведёт к исключению во время выполнения, если она не поддерживается сервером. Раньше не выбрасывалось исключение, и этот параметр, возможно, был проигнорирован. |
PECL mongodb 1.4.0 | Добавлена опция "arrayFilters" . |
PECL mongodb 1.2.0 | Добавлена опция "collation" . |
Пример #1 Пример использования MongoDB\Driver\BulkWrite::update()
<?php
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->update(
['x' => 2],
['$set' => ['y' => 3]],
['multi' => false, 'upsert' => false]
);
$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$result = $manager->executeBulkWrite('db.collection', $bulk);
?>