3

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;
4

3 回答 3

3

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

于 2012-04-30T21:44:52.233 回答
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"
]);
于 2020-07-22T10:25:59.740 回答
-1

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

于 2013-02-15T12:24:44.923 回答