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

如何用Mongoose实现类似SQL LIKE的deleteMany批量删除操作?

使用Mongoose批量删除包含特定字符串的文档

对应你提供的SQL语句 DELETE FROM users WHERE name LIKE '%test%',在Mongoose中可以通过以下方式实现:

核心方案:deleteMany() + 正则表达式

Mongoose的deleteMany()方法支持批量删除符合查询条件的文档,结合正则表达式就能匹配字段中包含指定字符串的文档:

// 引入你的User模型(路径根据实际项目调整)
const User = require('./models/user');

// 匹配name字段包含'test'的所有文档并删除
User.deleteMany({ name: /test/ })
  .then(result => {
    console.log(`成功删除 ${result.deletedCount} 条文档`);
  })
  .catch(error => {
    console.error('删除操作失败:', error);
  });

关键细节:

  • 正则表达式/test/默认大小写敏感,如果需要忽略大小写,改用/test/i
  • deleteMany()返回的结果对象中,deletedCount属性会告诉你实际被删除的文档数量

备选方案:逐个删除(不推荐)

如果需要对每个被删除的文档做额外处理,可以用findOneAndDelete()循环,但批量场景下效率远低于deleteMany():

async function deleteMatchingUsers() {
  let deletedCount = 0;
  let matchedUser;
  do {
    matchedUser = await User.findOneAndDelete({ name: /test/ });
    if (matchedUser) deletedCount++;
  } while (matchedUser);
  console.log(`成功删除 ${deletedCount} 条文档`);
}

// 执行删除
deleteMatchingUsers().catch(err => console.error('删除出错:', err));

重要提醒:删除操作不可逆!执行前建议先用find()确认待删除的文档集合:

User.find({ name: /test/ }).then(users => console.log('待删除文档列表:', users));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:10:51