MongoDB\Collection::updateOne()
定义
MongoDB\Collection::updateOne()
最多更新一个与过滤条件匹配的文档。如果有多个文档符合过滤条件,则只更新第一个符合条件的文档。
function updateOne( array|object $filter, array|object $update, array $options = [] ): MongoDB\UpdateResult
参数
$filter
: array|object- 指定要更新的文档的筛选条件。
$update
: array|object- 指定要更新的字段和值的组合以及任何相关的更新操作符。
$update
使用 MongoDB 的更新操作符。 从 MongoDB 4.2开始,可以将聚合管道作为此参数传递。 $options
: array指定所需选项的数组。
名称类型说明arrayFilters阵列一个筛选器文档数组,确定要针对数组字段的更新操作修改哪些数组元素。
1.3 版本中的新增功能。
bypassDocumentValidation布尔如果为true
,则允许写入操作规避文档级验证。默认为false
。排序规则数组|对象comment混合提示字符串|数组|对象要使用的索引。将索引名称指定为字符串或将索引键模式指定为文档。如果指定,查询系统将只考虑使用提示索引的计划。
自 MongoDB 4.2 起此选项可用,如果为旧服务器版本指定,则会在执行时导致异常。
1.6 版本中的新增功能。
let数组|对象参数名称和值的映射。值必须是常量或不引用文档字段的封闭表达式。然后可以在聚合表达式上下文中将参数作为变量进行访问(例如
$$var
)。5.0 之前的服务器版本不支持此功能,如果使用,将导致执行时出现异常。
1.13 版本中的新增功能。
会话与操作相关联的客户端会话。
1.3 版本中的新增功能。
更新插入布尔如果设置为true
,则在没有文档符合查询条件时创建一个新文档。默认值为false
,在未找到匹配项时不插入新文档。writeConcern
Return Values
一个MongoDB\UpdateResult
对象,其中封装了 MongoDB\ 驱动程序\WriteResult 对象。
错误/异常
MongoDB\Exception\UnsupportedException
,如果所选服务器使用了选项但不支持选项(例如collation
、readConcern
、writeConcern
)。
MongoDB\Exception\InvalidArgumentException
用于与参数或选项解析相关的错误。
MongoDB\Driver\Exception\BulkWriteException 与写入操作相关的错误。用户应检查 getWriteResult() 返回的值 以确定错误的性质。
MongoDB\ 驱动程序\Exception\RuntimeException 对于扩展级别的其他错误(例如连接错误)。
行为
在评估查询条件时,MongoDB 会根据自己 的 比较规则来BSON types 比较类型和值,这不同于 的PHP 比较 和 类型杂技 规则。匹配特殊BSON类型时,查询条件应使用相应的 BSON类 在扩展(例如使用 MongoDB\ BSON\ObjectId 以匹配 ObjectId )。
如果 MongoDB\Driver\Exception\BulkWriteException 抛出,用户应调用 getWriteResult() 并检查返回的 MongoDB\Driver\WriteResult 对象以确定错误的性质。
例如,写入操作可能已成功应用于主服务器,但未能满足写关注(例如复制时间太长)。或者,写入操作可能完全失败(例如唯一键冲突)。
示例
以下示例通过将 name
字段设置为 "Brunos on Astoria"
,来更新 restaurant_id
为 "40356151"
的文档:
$collection = (new MongoDB\Client)->test->restaurants; $updateResult = $collection->updateOne( [ 'restaurant_id' => '40356151' ], [ '$set' => [ 'name' => 'Brunos on Astoria' ]] ); printf("Matched %d document(s)\n", $updateResult->getMatchedCount()); printf("Modified %d document(s)\n", $updateResult->getModifiedCount());
而输出将类似如下所示:
Matched 1 document(s) Modified 1 document(s)