我们正在使用MONGO DB和PHP(版本7.xx),最近我们对MongoDB应用了身份验证。
我们使用配置"mongodb://IP地址:端口“连接到MongoDB,并将其更改为”mongodb://用户名:密码@IP:端口“。
当我尝试用数据库名连接DB URL时,如"mongodb://user_ NAME :password@IP:PORT/DB NAME",它是工作的。但如果没有数据库名称,如"mongodb://user_ NAME :password@IP:PORT",则会返回验证失败错误。
我想知道如何通过MongoDB地址连接到所有的数据库。
欢迎任何帮助。
发布于 2020-10-27 12:36:20
你可以参考我的代码:
private static function getMongoConfiguration(string $host, int $port, string $user, string $password,
bool $isReplica, string $replicaSetName = "rs0", array $replicaConfigs = [])
{
$params = [];
$mgDb = "mongodb://" . $user . ":" . $password;
if (!$isReplica){
$mgDb = $mgDb. "@". $host . ":" . $port;
}else{
$params = [
"replicaSet" => $replicaSetName,
"db" => $database
];
$c = 1;
foreach ($replicaConfigs as $dbToUse) {
$mongoHost = isset($dbToUse["host"]) ? $dbToUse["host"] : $port;
$mongoPort = isset($dbToUse["port"]) ? $dbToUse["port"] : $port;
$new = $mongoHost . ":" . $mongoPort;
$mgDb = ($c > 1) ? $mgDb . "," . $new : $mgDb . $new;
$c++;
}
}
return [$mgDb, $params];
}然后创建与MongoDb交互的Client
$mongo = new Client($mgDb, $params);
// interact with 'app' database ...
$dbName = 'app';
$db = $mongo->{$dbName};注意:我使用https://packagist.org/packages/mongodb/mongodb作为Php Mongo驱动程序的高级抽象
https://stackoverflow.com/questions/64547540
复制相似问题