参考 > 参考 > mongo Shell方法 > 收集方法 > db.collection.findOneAndDelete()
db.collection.
findOneAndDelete
(filter,options )¶mongo
壳法
此页面记录了mongo
shell方法,并且
没有引用MongoDB Node.js驱动程序(或任何其他驱动程序)方法。对于相应的MongoDB驱动程序API,请改为参考您特定的
MongoDB驱动程序文档。
3.2版中的新功能。
根据filter
和sort
条件删除单个文档,并
返回删除的文档。
该findOneAndDelete()
方法具有以下形式:
该findOneAndDelete()
方法采用以下参数:
参数 | 类型 | 描述 |
---|---|---|
filter |
文献 |
指定一个空文档以删除集合中返回的第一个文档。 如果未指定,则默认为空文档。 从MongoDB 4.2(和4.0.12 +,3.6.14 +和3.4.23+)开始,如果查询参数不是文档,则操作错误。 |
projection |
文献 | 可选的。要返回的字段子集。 要返回返回文档中的所有字段,请省略此参数。 从MongoDB 4.2(和4.0.12 +,3.6.14 +和3.4.23+)开始,如果projection参数不是文档,则操作会出错。 |
sort |
文献 | 可选的。指定与匹配的文档的排序顺序 从MongoDB 4.2(和4.0.12 +,3.6.14 +和3.4.23+)开始,如果sort参数不是文档,则操作会出错。 请参阅 |
maxTimeMS |
数 | 可选的。指定操作必须在其内完成的时间限制(以毫秒为单位)。如果超出限制,则会引发错误。 |
collation |
文献 | 可选的。 指定 用于操作的排序规则。 归类允许用户为字符串比较指定特定于语言的规则,例如字母大写和重音符号的规则。 排序规则选项具有以下语法: 指定排序规则时,该 如果未指定排序规则,但是集合具有默认排序规则(请参阅参考资料 如果没有为集合或操作指定排序规则,则MongoDB使用先前版本中使用的简单二进制比较进行字符串比较。 您不能为一个操作指定多个排序规则。例如,您不能为每个字段指定不同的排序规则,或者如果对排序执行查找,则不能对查找使用一种排序规则,而对排序使用另一种排序规则。 3.4版的新功能。 |
返回值: | 返回删除的文档。 |
---|
findOneAndDelete()
删除集合中与匹配的第一个匹配文档filter
。该sort
参数可用于影响删除哪个文档。
该projection
参数采用以下格式的文档:
该<boolean>
值可以是以下任意值:
1
或true
包含该字段。_id
即使未在projection参数中明确说明该方法,该方法也会返回该
字段。0
或false
排除该字段。可以在任何字段(包括)上使用_id
。db.collection.findOneAndDelete()
可以在多文档交易中使用。
如果在事务中运行,则不要为操作明确设置写关注点。要对事务使用写关注,请参见 事务和写关注。
重要
在大多数情况下,与单文档写入相比,多文档事务产生的性能成本更高,并且多文档事务的可用性不应代替有效的架构设计。在许多情况下, 非规范化数据模型(嵌入式文档和数组)对于您的数据和用例将继续是最佳的。也就是说,在许多情况下,对数据进行适当的建模将最大程度地减少对多文档交易的需求。
有关其他事务使用方面的注意事项(例如运行时限制和oplog大小限制),另请参见 生产注意事项。
该scores
集合包含与以下内容相似的文档:
以下操作首先在中找到所有文档
。然后,它会按照升序进行排序,然后再删除最低分值的文档:name : "A. MacDyver"
points
该操作返回已删除的原始文档: