(mongodb >=1.0.0)
MongoDB\Driver\BulkWrite::update — 向批量写入操作中添加更新操作
$filter
, 数组|对象 $newObj
, ?数组 $updateOptions
= null
): void向MongoDB\Driver\BulkWrite添加一个更新操作。
filter
(数组|对象)查询谓词。» 查询谓词。空谓词将匹配集合中的所有文档。
注意: 在评估查询条件时,MongoDB根据其自身的» BSON类型比较规则比较类型和值,这与PHP的比较和类型转换规则不同。当匹配特殊BSON类型时,查询条件应使用相应的BSON类(例如,使用MongoDB\BSON\ObjectId匹配» ObjectId)。
newObj
(数组|对象)包含更新运算符(例如$set
)、替换文档(即*只有*field:value
表达式)或» 聚合管道的文档。
updateOptions
选项 | 类型 | 描述 | 默认值 |
---|---|---|---|
arrayFilters | 数组 |
确定对数组字段的更新操作要修改哪些数组元素的过滤器文档数组。有关更多信息,请参阅MongoDB手册中的» 为数组更新操作指定arrayFilters。 此选项在MongoDB 3.6+中可用,如果为旧版服务器指定此选项,则会在执行时引发异常。 |
|
collation | 数组|对象 |
» 校对允许用户为字符串比较指定特定于语言的规则,例如大小写和重音符号的规则。指定校对时, 如果未指定校对,但集合具有默认校对,则操作使用为集合指定的校对。如果未为集合或操作指定校对,则MongoDB将使用先前版本中用于字符串比较的简单二进制比较。 此选项在MongoDB 3.4+中可用,如果为旧版服务器指定此选项,则会在执行时引发异常。 |
|
hint | 字符串|数组|对象 |
索引规范。指定索引名称(作为字符串)或索引键模式。如果指定,则查询系统将仅考虑使用暗示索引的计划。 此选项在MongoDB 4.2+中可用,如果为旧版服务器指定此选项,则会在执行时引发异常。 |
|
multi | 布尔值 | 如果为false ,则仅更新第一个匹配的文档;如果为true ,则更新所有匹配的文档。如果newObj 是替换文档,则此选项不能为true 。 |
false |
upsert | 布尔值 | 如果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://127.0.0.1:27017');
$result = $manager->executeBulkWrite('db.collection', $bulk);
?>