2014-09-02 2 views
0

Я пытаюсь запустить этот точный запрос в PHP с MongoDB-ODMПреобразовать консоль команда ODM

db.runCommand ({ distinct: "messages", 
        key: "conversation", 
        query: { conversation: { $in: ["533f28c9211b6f7e448b4567","52cb29b0211b6fd9248b456b"] } } 
       }) 

Как я могу transate его различны()? спасибо.

+0

Я бы начните с чтения документации ODM, в зависимости от того, что это. Было бы неплохо узнать, какую именно библиотеку вы используете, и любой код, который вы уже написали на этот счет. – Roberto

ответ

0

Вы можете увидеть Мою реализацию:

Определить этот метод, выполнить яваскрипт запроса в 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 
Смежные вопросы