如何从 PHP MongoDB 调用 JavaScript 函数


how to call from php mongodb javascript function?

在 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