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

时间:2012-04-30 21:40:20

标签: php mongodb

MongoDB的PHP库允许我连接到这样的集合(from example):

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

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

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

我可以这样做using the Python API,所以我觉得奇怪的是我无法用PHP做到这一点。

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

Fatal error: Cannot use object of type Mongo as array

答案:根据下面接受的答案,这将有效:

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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"
]);

答案 2 :(得分:-1)

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