在 PHP 中,我调用 mongodb JavaScript 函数 start()
$username="root";
$password="root";
$mongo_uri="mongodb://".$username.":".$password."@localhost";
$connection = new MongoClient( $mongo_uri );
$db = $connection->test;
$response = $db->execute("start()");
print_r($response);
由于得到
Array
(
[ok] => 0
[errmsg] => unauthorized
)
$username + $password + $mongo_uri - 对,$db给确定连接,
但在未经授权的$response = $db->execute("start()");
上收到错误
如何从 PHP MongoDB 函数 start() 调用?
这里的execute()
方法被实现为MongoDB的db.eval()
方法的包装器。所以大概你指的是你在服务器启动时加载的一些服务器端JavaScript方法。
如身份验证角色手册页所示,eval 需要的特殊权限可能尚未授予用于进行身份验证的帐户。这可能是一件好事,因为对于常规 CRUD 操作,使用的帐户不应具有这些权限级别。如果有的话,这种操作应该只在它自己的特权连接上使用。
对于生产系统来说,执行服务器端 JavaScript 通常不是一个好主意,如果你的函数实际上相当微不足道,那么最好在你的原生库代码中重新实现它。
因此,请注意手册页上db.eval()
警告,并注意即使分配了正确的权限,也无法在分片集群环境中运行此命令。
最后,如果您绝对需要,还可以参阅 MongoCode
类,了解定义 JavaScript 调用的更好方法。
eval() 需要特殊权限。
不鼓励使用它,以至于您需要自己创建角色。
请参阅 http://docs.mongodb.org/manual/reference/command/eval/#dbcmd.eval