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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 14:35:23