PHP mongodb中的无身份验证切换数据库

PHP mongodb中的无身份验证切换数据库,php,mongodb,Php,Mongodb,我正在使用php MongoClient()登录(auth=true)到使用php的mongodb“测试”。 现在,我想在不进行身份验证的情况下使用php将db切换到“test1”。 它可以与mongoshell命令“usetest1”配合使用 当我尝试在php中使用connection->selectdb(“test1”)执行相同的操作时,它尝试在“test1”db上对同一用户进行身份验证,但失败了 是否有一种使用Php Mongoclient()切换db的方法 mongoshell上的以下代

我正在使用php MongoClient()登录(auth=true)到使用php的mongodb“测试”。 现在,我想在不进行身份验证的情况下使用php将db切换到“test1”。 它可以与mongoshell命令“usetest1”配合使用 当我尝试在php中使用connection->selectdb(“test1”)执行相同的操作时,它尝试在“test1”db上对同一用户进行身份验证,但失败了

是否有一种使用Php Mongoclient()切换db的方法

mongoshell上的以下代码将在test上对user1进行身份验证,并通过将结果存储在test.SampleGroupby中,在test1.orders上运行mapreduce

mongo --host XXXX -u user1 -p XXXX --authenticationDatabase test
 use test1;  /*I don't need to authenticate user1 on test1 (test.user1 already has read/write permission on test1) */
 db.orders.mapReduce(mapf, redf, {"out": {reduce: "SampleGroupby", db: "test"}, finalize: finf })
现在我想用php实现同样的功能-

$Connection = MongoClient("mongodb://XXXX:XXXX", array("username" => user1, "password" => XXXX, "db" => test));
$Connection->test1->command(array(     /*Here it tries to re authenticate user1 on test1 and fails */
"mapreduce" => orders,
"map" => $map,
"reduce" => $reduce,
"out" => array("reduce" => SampleGroupby , "db" => test),
"finalize" => $finalize
));

MongoClient是用于连接到MongoDB主机的PHP类,参数为连接字符串。 连接字符串封装用户名、密码和Mongodb主机

如果MongoDB配置为启用身份验证,则连接字符串中只需要用户名和密码

例如,mongodb://username:password@主机:端口


MongoClient将返回数据库连接对象

使用数据库连接对象,我们使用selectDB()方法切换到特定的数据库

例如

如果启用了身份验证,则每个数据库将有一个单独的用户

因此,为了切换到另一个数据库,我们需要使用MongoClient和连接字符串作为参数定义一个新的连接对象,然后使用返回的连接对象调用selectDB()方法


如果没有启用身份验证,我们只需要调用selectDB()方法,并将数据库名称作为参数

谢谢您的响应。我明白了这一点,但这里的问题是,我无法达到使用mongo shell所能达到的效果。更新了问题的确切情况。
$conn = new MongoClient('mongodb://username:password@host:port'); 
$db = $conn->selectDB("dbname");