在PHP中指定Mongo DB和集合名称作为变量
MongoDB的PHP库允许我连接到这样的集合():在PHP中指定Mongo DB和集合名称作为变量,php,mongodb,Php,Mongodb,MongoDB的PHP库允许我连接到这样的集合(): $m=newmongo(); $db=$m->喜剧; $collection=$db->cartons; 但是如何将数据库和/或集合名称指定为变量?我想做的是这样的: $m=newmongo(); $dbname=“喜剧”; $collectionname=“卡通”; $db=$m[$dbname]; $collection=$db[$collectionname]; 我可以做到这一点,所以我觉得奇怪的是,我不能用PHP做到这一点 更新:
$m=newmongo();
$db=$m->喜剧;
$collection=$db->cartons;
但是如何将数据库和/或集合名称指定为变量?我想做的是这样的:
$m=newmongo();
$dbname=“喜剧”;
$collectionname=“卡通”;
$db=$m[$dbname];
$collection=$db[$collectionname];
我可以做到这一点,所以我觉得奇怪的是,我不能用PHP做到这一点
更新:这就是我在使用上述方法时遇到的错误,这让我相信没有内置的方法可以使用变量名来处理MongoDB集合
Fatal error: Cannot use object of type Mongo as array
回答:根据下面接受的答案,这将起作用:
$db=$m->$dbname;
$collection=$db->$collectionname;
您仍然可以通过变量使用->ie$m->$dbname
via来获取它,该变量将与使用的“名称”是PHP中有效的var名称的规定一起工作(例如,如果在“集合”名称上使用空格,它将失败)。更新了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"
]);
谢谢,刚刚编辑过。但这并没有解决它-这是我得到的错误:“致命错误:不能使用Mongo类型的对象作为数组”您仍然可以通过变量->ie$m->$dbname通过Ah获得它,这确实有效!谢谢,你能编辑/更新你的答案吗?是否将此标记为正确?