MongoDB中$in条件删除异常:仅删除首条匹配记录问题
解决MongoDB仅删除第一条匹配文档的问题
嘿,我懂你遇到的困扰了——明明用了$in条件匹配多条文档,结果findAndModify只删掉了第一条。这其实是因为findAndModify的设计逻辑就是单次操作仅处理单个文档,不管你的查询条件能命中多少条记录,它都会按照你指定的排序规则(这里是_id升序)只处理第一条符合要求的文档。
要批量删除所有匹配条件的文档,你得用MongoDB专门的批量删除API:deleteMany()。
替换后的正确代码示例:
myDb.collection('ABC').deleteMany( { 'projectName': projectName, 'companyName': companyName, 'moduleName': { $in: deleteModule } // deleteModule即你的["ab","bc"]数组 } )
额外补充:
deleteMany()执行后会返回一个结果对象,其中的deletedCount字段可以帮你确认实际删除了多少条记录。- 如果你的业务必须要在删除时逐个获取被删除的文档(类似
findAndModify的返回逻辑),那可以用循环结合findOneAndDelete()实现,但这种方式效率远低于deleteMany(),只建议在有特殊逐条处理需求时使用。
内容的提问来源于stack exchange,提问作者mohan
相关产品推荐
相关产品推荐

