You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mongoose是否有findAndUpdate函数?多条件过滤更新方法问询

Mongoose实现双条件过滤的文档更新

首先明确:Mongoose的findOneAndUpdate方法本身就支持多条件过滤,并非只能单条件查询。你代码里的findAndUpdate不是Mongoose内置方法,属于笔误,正确写法是findOneAndUpdate。

以patientIDnumber和appNum为双条件的更新实现代码如下:

await ReceiptDetails.findOneAndUpdate(
  // 双条件过滤:同时匹配patientIDnumber和appNum
  { 
    patientIDnumber: patientIDnumber,
    appNum: appNum
  }, 
  // 需要更新的字段集合
  {
    dateIssued: date, 
    addedItem: addedItemValue,
    paymentType: paymentType,
    totalAmount: totalAmount,
    officialReceiptNum: officialReceiptNum,
    addedProcedurePrice: addedProcedurePrice,
    amountPaid: amountPaid
  },
  // 可选配置:设置new为true,返回更新后的文档(默认返回更新前的)
  { new: true }
)

补充说明

  • 查询条件对象中的多个键值对默认是**逻辑与(AND)**关系,即只有同时满足所有条件的文档才会被更新
  • 如果需要复杂逻辑(比如逻辑或),可以使用Mongoose的查询操作符,例如$or:
    { $or: [{ patientIDnumber: 'xxx' }, { appNum: 'yyy' }] }
    
  • 若需要确保只有当文档存在时才执行更新,可以添加{ upsert: false }(这是默认配置,可省略);如果要在文档不存在时创建新文档,设置{ upsert: true }

内容的提问来源于stack exchange,提问作者dape

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 11:20:26