MongoDB\Driver\BulkWrite::update

(mongodb >=1.0.0)

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

描述

public MongoDB\Driver\BulkWrite::update(array|object $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

updateOptions
选项 类型 描述 默认值
arrayFilters array

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

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

collation array|object

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

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

?>

参见

添加注释

用户贡献的注释

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