MongoDB中deleteMany多条件过滤报错,求错误原因及解决方法
错误分析与修正
你的代码存在两个核心问题:
- filter参数类型错误:你把filter定义成了字符串,而
deleteMany()要求传入的是合法的JavaScript对象,不是字符串形式的"对象文本"。 - 多条件匹配语法错误:要匹配多个符合条件的文档,需要使用MongoDB的
$or操作符包裹多个条件对象,不能直接用逗号分隔两个对象。
另外注意:004970这种带前导零的数字在JavaScript中会被解析为八进制数,可能导致数值错误。如果数据库中article字段是字符串类型,建议把值用引号包裹;如果是数字类型,直接写十进制数值即可(比如4970)。
修正后的代码
// 正确的filter对象,用$or指定多个匹配条件 const filter = { $or: [ { supplier: '000822', article: 4970 }, // 根据数据库字段类型调整article值的格式 { supplier: '000822', article: 4975 } ] }; Orders.deleteMany(filter) .then((result) => { console.log("result: " + result.deletedCount); // 后续业务逻辑 }) .catch(err => { // 错误处理逻辑 });
补充说明
如果你的article字段在数据库中是字符串类型(比如存储的是"004970"),那么filter里的article值要写成字符串形式:
const filter = { $or: [ { supplier: '000822', article: '004970' }, { supplier: '000822', article: '004975' } ] };
执行修正后的代码,会正确删除所有符合supplier: '000822'且article为004970、supplier: '000822'且article为004975的文档(对应原数据里id为1101、1102、1105的三条记录)。
内容的提问来源于stack exchange,提问作者hansvdzz
相关产品推荐
相关产品推荐

