findOneAndDelete() - 原子查找并删除
📑 目录
原子地查找并删除单个文档,返回被删除的文档。这是一个原子操作,适合需要获取旧值同时删除的场景。
语法
参数
filter (Object, 必需)
筛选条件。
options (Object, 可选)
返回值
默认返回被删除的文档对象或 null(未找到)。
如果 includeResultMetadata: true,返回:
⚠️ 重要提示 - MongoDB 驱动 6.x 兼容性
monSQLize 使用 MongoDB Node.js 驱动 6.x,该版本对
findOneAndDelete的返回值格式进行了重要变更:驱动 6.x (当前版本):
- 默认直接返回文档对象
- 需要显式设置
includeResultMetadata: true才返回完整元数据驱动 5.x 及更早版本:
- 默认返回完整元数据
{ value, ok, lastErrorObject }✅ monSQLize 的处理:
- 已在内部自动处理此差异,用户无需关心驱动版本
- API 行为保持一致,向后兼容
- 详见技术分析报告:
analysis-reports/2025-11-17-mongodb-driver-6x-compatibility.md
核心特性
原子性保证
常见场景
场景 1: 任务队列消费
场景 2: 会话清理
场景 3: 分布式锁释放
与其他方法的区别
相关方法
- deleteOne() - 删除单个文档(不返回文档)
- deleteMany() - 批量删除文档
- findOneAndUpdate() - 原子查找并更新
- findOneAndReplace() - 原子查找并替换