如何从php mongodb javascript函数调用?

时间:2014-04-03 23:29:02

标签: php mongodb

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给ok连接,

但在$response = $db->execute("start()");

上发现了未经授权的错误

如何从php mongodb函数start()调用?

2 个答案:

答案 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