在 PHP 中将 Mongo DB 和集合名称指定为变量


Specify Mongo DB and Collection name as variables in PHP

MongoDB的PHP库允许我连接到这样的集合(来自示例(:

$m = new Mongo(); 
$db = $m->comedy; 
$collection = $db->cartoons;

但是如何将数据库和/或集合名称指定为变量呢?我想做的是这样的:

$m = new Mongo();
$dbname = "comedy"; 
$collectionname = "cartoons"; 
$db = $m[$dbname]; 
$collection = $db[$collectionname];

我可以使用Python API来做到这一点,所以我觉得很奇怪,我不能使用PHP来做到这一点。

更新:这是我使用上述方法时遇到的错误,这让我相信没有内置的方法可以使用变量名称解决 MongoDB 集合?

Fatal error: Cannot use object of type Mongo as array

答:根据下面接受的答案,这将起作用:

$db = $m->$dbname; 
$collection = $db->$collectionname;

您仍然可以使用 -> 即通过 http://php.net/manual/en/mongo.tutorial.php $m->$dbname变量获取它

更新了

mongodb库的代码:

$dbname = "comedy";
$collectionname = "cartoons";
$collection = (new MongoDB'Client("mongodb://".$config["MONGO_USER"].":".$config["MONGO_PASS"]."@".$config["MONGO_SERVER"]."/".$dbname))
        ->{$dbname}->{$collectionname};
$insertOneResult = $collection->insertOne([
    'data'=>"my data"
]);

这将适用于所使用的"名称"是PHP中有效的var名称的规定(例如,如果您在"集合"名称上使用空格,它将失败(。