(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);
?>