(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 |
一个过滤器文档数组,用于确定对数组字段的更新操作要修改哪些数组元素。有关更多信息,请参阅 MongoDB 手册中的 » 指定数组更新操作的 arrayFilters。 此选项在 MongoDB 3.6+ 中可用,如果为旧版本的服务器指定此选项,则在执行时会导致异常。 |
|
collation | array|object |
» 校对 允许用户为字符串比较指定特定于语言的规则,例如大小写和重音符号的规则。指定校对时, 如果未指定校对,但集合具有默认校对,则操作将使用为集合指定的校对。如果未为集合或操作指定校对,则 MongoDB 将使用之前版本中使用的简单二进制比较来进行字符串比较。 此选项在 MongoDB 3.4+ 中可用,如果为旧版本的服务器指定此选项,则在执行时会导致异常。 |
|
hint | string|array|object |
索引规范。指定索引名称作为字符串或索引键模式。如果指定,则查询系统将仅考虑使用提示索引的计划。 此选项在 MongoDB 4.2+ 中可用,如果为旧版本的服务器指定此选项,则在执行时会导致异常。 |
|
multi | bool | 如果为 false ,则仅更新第一个匹配文档,如果为 true ,则更新所有匹配文档。如果 newObj 是替换文档,则此选项不能为 true 。 |
false |
upsert | bool | 如果 filter 不匹配现有文档,则插入一个单个文档。如果 newObj 是替换文档(即,没有更新运算符),则该文档将从 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);
?>