MongoDB\Collection::updateMany()
定义
参数
$filter
: 数组|对象- 指定要更新的文档的筛选条件。
$update
: 数组|对象- 指定要更新字段和值组合以及任何相关的更新运算符。
$update
使用 MongoDB 的更新运算符。从 MongoDB 4.2 开始,可以将 聚合管道 作为此参数传递。 $options
: 数组指定所需选项的数组。
名称类型描述arrayFilters数组一个筛选文档数组,用于确定要修改数组字段的更新操作中的哪些数组元素。
新在版本1.3.
bypassDocumentValidation布尔值如果设置为true
,则允许写入操作绕过文档级验证。默认为false
。collation数组|对象comment混合hint字符串|数组|对象要使用的索引。指定索引名称(字符串形式)或索引键模式(文档形式)。如果指定,则查询系统将只考虑使用提示索引的计划。
此选项自MongoDB 4.2版本起可用,如果用于旧版本服务器,则在执行时将引发异常。
新在版本1.6.
let数组|对象参数名称和值的映射。值必须是常数或封闭表达式,不得引用文档字段。参数可以然后在聚合表达式上下文中作为变量访问(例如
$$var
)。此功能不支持5.0版本之前的服务器,如果使用则会在执行时引发异常。
新在版本1.13.
session与操作关联的客户端会话。
新在版本1.3.
upsert布尔值如果设置为true
,则在没有文档匹配查询条件时创建新文档。默认值是false
,表示如果没有找到匹配项则不插入新文档。writeConcern
返回值
AMongoDB\UpdateResult
对象,它封装了一个 MongoDB\Driver\WriteResult 对象。
错误/异常
MongoDB\Exception\UnsupportedException
如果使用了不支持所选服务器(例如 collation
、readConcern
、writeConcern
)的选项。
MongoDB\Exception\InvalidArgumentException
与参数或选项解析相关的错误。
MongoDB\Driver\Exception\BulkWriteException 用于处理写入操作相关的错误。用户应检查getWriteResult() 返回的值,以确定错误的性质。
MongoDB\Driver\Exception\RuntimeException 用于处理扩展层面的其他错误(例如连接错误)。
行为
When evaluating query criteria, MongoDB compares types and values according to its own comparison rules for BSON types, which differs from PHP's comparison and type juggling rules. When matching a special BSON type the query criteria should use the respective BSON class in the extension (e.g. use MongoDB\BSON\ObjectId to match an ObjectId).
如果抛出了 MongoDB\Driver\Exception\BulkWriteException 异常,用户应调用 getWriteResult() 并检查返回的 MongoDB\Driver\WriteResult 对象以确定错误的性质。
例如,写入操作可能已成功应用到主服务器,但未能满足写入关注点(例如,复制花费时间过长)。或者,写入操作可能完全失败(例如,违反了唯一键)。
示例
以下示例通过将 active
字段设置为 true
来更新所有具有 "Queens"
区的文档
$collection = (new MongoDB\Client)->test->restaurants; $updateResult = $collection->updateMany( [ 'borough' => 'Queens' ], [ '$set' => [ 'active' => true ]] ); printf("Matched %d document(s)\n", $updateResult->getMatchedCount()); printf("Modified %d document(s)\n", $updateResult->getModifiedCount());
输出结果如下
Matched 5656 document(s) Modified 5656 document(s)