Я использую MongoDB 2.6 с двумя конфигурациями кластеров шардов.
Я хочу вызвать функцию dataStats (), которую я создаю и храню в MongoDB. Это мой 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 Команда db.eval, которая не поддерживается с осколочными коллекциями.. Есть ли решение этой проблемы? Как мы можем вызвать хранимую процедуру в защищенном MongoDB из PHP?
Там нет обходного пути. db.eval
не работает с осколочными коллекциями. Вы должны избегать его использования, если это вообще возможно.
Других решений пока нет …