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;
答案 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名称的规定(例如,如果在“集合”名称上使用空格,它将失败)。