rmdir.cn

db.collection.findOneAndUpdate()

原子更新并返回文档

语法

db.collection.findOneAndUpdate(<filter>, <update>, <options>)

说明

原子地查找并更新一条文档。可返回更新前的旧文档或更新后的新文档(returnNewDocument: true)。常用于并发安全的操作如计数器、队列等。

参数

  • filter必填

    查询条件

  • update必填

    更新操作符

  • returnNewDocument

    true 返回更新后的文档

  • upsert

    不存在时是否插入

  • sort

    匹配多条时按排序选择

示例

原子自增序列号

获取下一个订单号(并发安全)

db.counters.findOneAndUpdate({ _id: "orderId" }, { $inc: { seq: 1 } }, { returnNewDocument: true })

返回更新后文档

更新并返回新文档

db.users.findOneAndUpdate({ _id: userId }, { $set: { status: "verified" } }, { returnNewDocument: true })