(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-класса, который соответствует типу BSON-значения, поэтому для сопоставления с BSON-типом » ObjectId указывают объект класса MongoDB\BSON\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);
?>