在Mongo DB分片集群中使用PHP调用存储过程/函数

在Mongo DB分片集群中使用PHP调用存储过程/函数,php,mongodb,sharding,Php,Mongodb,Sharding,我正在使用MongoDB 2.6和两个碎片集群配置。 我想调用我在MongoDB中创建并存储的函数dataStats()。这是我的PHP脚本: $client = new Mongo(); $db = $client->mydata; $db->system->js->save(array("_id"=>"dataStats", "value"=>new MongoCode("function() { ... }"))); $db->exec

我正在使用MongoDB 2.6和两个碎片集群配置。 我想调用我在MongoDB中创建并存储的函数dataStats()。这是我的PHP脚本:

$client = new Mongo();
$db = $client->mydata;

$db->system->js->save(array("_id"=>"dataStats", 
   "value"=>new MongoCode("function() { ... }")));

$db->execute("dataStats()");
此代码给出了以下错误:

  'err' => 'Error: can\'t use sharded collection from db.eval',
  'code' => 16722

原因是$db->execute方法正在使用Mongo。这个问题有解决办法吗?我们如何从PHP调用sharded MongoDB中的存储过程?

没有解决方法
db.eval
不适用于分片集合。无论如何,如果可能的话,你应该尽量避免使用它。

我认为你是在试图将你在其他技术上已经习惯的东西强加到MongoDB中,而它并不适合。MongoDB中没有存储过程,在它真正得到支持之前,我不会尝试任何“聪明”的方法——这些类型的解决方案永远不会100%工作。我的五美分。