Вы можете увидеть Мою реализацию:
Определить этот метод, выполнить яваскрипт запроса в MongoDB
/**
* Execute javascript in mongodb
*
* @param string $js JavaScript function
*
* @return array
*/
protected function executeJs($js)
{
// get database name
$mongoDatabaseName = $this->dm->getConfiguration()->getDefaultDB();
// get connection
$m = $this->dm->getConnection();
// return results, get mongodb client
return $m->getMongo()
// select database
->selectDB($mongoDatabaseName)
// execute javasctipt function
->command(array(
// js
'eval' => $js,
// no lock database, while js will be executed
'nolock' => true,
));
}
Определение параметров Строки запрос
$_myQuery = 'function() {var messages = [];
db.runCommand ({ distinct: "messages",
key: "conversation",
query: { conversation: { $in: ["533f28c9211b6f7e448b4567","52cb29b0211b6fd9248b456b"] } }
}
).forEach(function(msg){ messages[]= msg });
return messages; }';
Наконец, выполнить ваш запрос
$messageCollection = $this->executeJs($_myQuery);
if(isset(messageCollection))
var_dump(messageCollection['retval']); // it will show result
Я бы начните с чтения документации ODM, в зависимости от того, что это. Было бы неплохо узнать, какую именно библиотеку вы используете, и любой код, который вы уже написали на этот счет. – Roberto