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

Laravel使用jenssegers mongodb库时如何获取MongoDB所有数据库名

获取MongoDB服务器上所有数据库名称(Laravel + jenssegers/mongodb)

嗨,我之前做项目的时候也碰到过一模一样的需求——翻遍了Laravel文档和jenssegers/mongodb的封装API,都没找到直接获取所有数据库名称的方法。后来发现其实可以绕开封装,直接调用MongoDB官方PHP扩展的原生方法来实现,步骤很简单:

步骤1:获取原生MongoDB客户端实例

jenssegers的数据库连接类其实封装了官方的MongoClient对象,我们可以直接把它取出来:

use Illuminate\Support\Facades\DB;

// 获取你配置的MongoDB连接实例(默认是'mongodb',如果有自定义连接名就替换成你的)
$mongoConnection = DB::connection('mongodb');

// 提取原生的MongoDB Client对象
$mongoClient = $mongoConnection->getMongoClient();

步骤2:调用listDatabases获取所有数据库

原生客户端自带listDatabases()方法,会返回包含所有数据库信息的数组,我们只需要提取其中的name字段即可:

// 获取所有数据库的完整信息
$allDatabases = $mongoClient->listDatabases();

// 提取数据库名称列表
$dbNameList = array_column($allDatabases, 'name');

// 现在$dbNameList就是你要的数组啦,比如['college_1', 'college_2', 'college_3']
dd($dbNameList);

注意事项

  • 确保你的MongoDB账号拥有listDatabases的权限,不然会返回空数组或者抛出权限错误。
  • 如果是比较老版本的jenssegers/mongodb,可能getMongoClient()方法名是getClient(),如果上面的代码报错,可以试试替换成这个方法名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:01:38