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
相关产品推荐
相关产品推荐

