我打电话给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给ok连接,
但在$response = $db->execute("start()");
如何从php mongodb函数start()调用?
答案 0 :(得分:0)
这里的execute()
方法是作为MongoDB的db.eval()
方法的包装器实现的。所以大概你指的是你在服务器启动时加载的一些服务器端JavaScript方法。
如authentication roles手册页所示,eval需要特殊权限,这些权限可能尚未授予您用于进行身份验证的帐户。这可能是一个好的事情,因为一般的CRUD操作所使用的帐户不应具有这些权限级别。如果有任何这种操作只应该在它自己的特权连接上使用。
执行服务器端JavaScript对于生产系统来说通常不是一个好主意,如果你的功能实际上是微不足道的,那么最好在本机库代码中重新实现它。
请注意db.eval()
手册页上的警告,并注意即使分配了正确的权限,您也无法在分片群集环境中运行此命令
最后,如果您绝对需要,还可以查看MongoCode
类来定义JavaScript调用。
答案 1 :(得分:0)
eval()需要特殊权限。
它的使用是如此沮丧,你需要自己创建角色。
请参阅http://docs.mongodb.org/manual/reference/command/eval/#dbcmd.eval