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

如何在MongoDB中通过正则匹配查询数据库名称

通过正则匹配查找并切换MongoDB数据库的方法

嘿,我懂你的困扰——你想找到那个以name_为前缀的动态生成数据库,然后切换过去对吧?你之前尝试用getDB()传查询条件的思路没问题,但可惜MongoDB的getDB()方法只接受字符串类型的数据库名,不支持直接传入正则或查询对象,这就是代码没生效的原因。

下面给你一个可行的解决方案,步骤很简单:先获取所有数据库的列表,再用正则过滤出目标库,最后切换过去:

// 建立Mongo连接
conn = new Mongo();
// 获取所有数据库的详细信息
allDatabases = conn.getDBs().databases;

// 这里注意正则的方向:如果你要匹配前缀是name_的库,用/^name_/;如果是结尾用/name_$/
targetDbInfo = allDatabases.find(db => db.name.match(/^name_/));

if (targetDbInfo) {
  // 切换到目标数据库
  db = conn.getDB(targetDbInfo.name);
  print(`成功切换到数据库:${db.getName()}`);
} else {
  print("没有找到符合正则匹配条件的数据库");
}

几个需要注意的点:

  • 正则方向别搞反:你之前写的/name_$/是匹配以name_结尾的数据库,如果你的需求是前缀匹配,一定要改成/^name_/(^表示字符串开头)。
  • 多匹配处理:如果存在多个符合正则的数据库,上面的代码只会取第一个。如果有这种场景,你可以改成遍历输出所有匹配项,或者根据额外条件筛选:
    // 遍历输出所有匹配的数据库
    allDatabases.forEach(db => {
      if (db.name.match(/^name_/)) {
        print(`找到匹配数据库:${db.name}`);
      }
    });
    
  • getDBs()的权限:确保你的Mongo用户有足够权限查看所有数据库列表,不然可能拿不到完整的库信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:19:19