2024年PHP开发者大会日本站

MongoDB\Driver\BulkWrite::update

(mongodb >=1.0.0)

MongoDB\Driver\BulkWrite::update向批量写入操作中添加更新操作

描述

public 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

updateOptions
选项 类型 描述 默认值
arrayFilters 数组

确定对数组字段的更新操作要修改哪些数组元素的过滤器文档数组。有关更多信息,请参阅MongoDB手册中的» 为数组更新操作指定arrayFilters

此选项在MongoDB 3.6+中可用,如果为旧版服务器指定此选项,则会在执行时引发异常。

collation 数组|对象

» 校对允许用户为字符串比较指定特定于语言的规则,例如大小写和重音符号的规则。指定校对时,"locale"字段是必需的;所有其他校对字段都是可选的。有关字段的描述,请参阅» 校对文档

如果未指定校对,但集合具有默认校对,则操作使用为集合指定的校对。如果未为集合或操作指定校对,则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);

?>

参见

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top