文档菜单
文档首页
/ / /
PHP库手册
/ /

MongoDB\Collection::deleteMany()

本页内容

  • 定义
  • 参数
  • 返回值
  • 错误/异常
  • 行为
  • 示例
  • 另请参阅
MongoDB\Collection::deleteMany()

删除所有符合筛选条件的文档。

function deleteMany(
array|object $filter,
array $options = []
): MongoDB\DeleteResult
$filter : array|object
指定要删除的文档的筛选条件。
$options : array

指定所需选项的数组。

名称
类型
描述
collation
array|object

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

如果未指定排序规则,但集合具有默认排序规则,则操作使用集合指定的排序规则。如果集合或操作未指定排序规则,MongoDB将使用在先前版本中用于字符串比较的简单二进制比较。

注释
混合

允许用户指定任意注释,以便通过数据库分析器、当前操作输出和日志来追踪操作。

此选项自MongoDB 4.4版起可用,如果指定用于较旧的服务器版本,则会在执行时引发异常。

版本1.13.

提示
字符串|数组|对象

要使用的索引。指定索引名称作为字符串或索引键模式作为文档。如果指定,则查询系统将仅考虑使用提示索引的计划。

此选项自MongoDB 4.4版起可用,如果指定用于较旧的服务器版本,则会在执行时引发异常。

版本1.7.

let
array|object

参数名称和值的映射。值必须是常量或闭包表达式,不引用文档字段。然后可以在聚合表达式上下文中作为变量访问参数(例如 $$var)。

此选项不支持旧于5.0的服务器版本,如果使用,则会在执行时引发异常。

版本1.13.

会话

要关联操作的客户端会话。

版本1.3.

写关注

写关注用于操作的写关注。默认为集合的写关注。

无法在事务中将写关注指定为单个操作的一部分。相反,请在启动事务时设置writeConcern选项。

AMongoDB\DeleteResult 对象,该对象封装了一个 MongoDB\Driver\WriteResult 对象。

如果选项被使用且所选服务器不支持(例如 collationreadConcernwriteConcern),将抛出 MongoDB\Exception\UnsupportedException

对于与参数或选项解析相关的错误,将抛出 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对象以确定错误的性质。

例如,写入操作可能已成功应用于主服务器,但未满足写入关注(例如,复制时间过长)。或者,写入操作可能直接失败(例如,违反了唯一键)。

以下示例删除了所有具有 "ny" 作为 state 字段值的 users 集合中的文档

<?php
$collection = (new MongoDB\Client)->test->users;
$collection->drop();
$collection->insertOne(['name' => 'Bob', 'state' => 'ny']);
$collection->insertOne(['name' => 'Alice', 'state' => 'ny']);
$deleteResult = $collection->deleteMany(['state' => 'ny']);
printf("Deleted %d document(s)\n", $deleteResult->getDeletedCount());

输出结果将类似于

Deleted 2 document(s)

返回

createSearchIndexes()