2016-07-26 51 views
0
/** 
* @param $key 
* @param $value 
* @param $collection 
* @return array | \MongoDB\Driver\Cursor 
*/ 
static function simpleSelect($key, $value, $collection) 
{ 
    $con = \Core\Model\Mongo::getConnect(); 

    $query = new \MongoDB\Driver\Query(
     array(
      $key => $value 
     ) 
    ); 

    return $con->executeQuery(\Core\Helper::getDb()['mongodb']['db'] . '.' . $collection, $query); 
} 

我開發類,爲mongodb驅動程序。我有麻煩了,怎麼我這個文件我讀什麼cursorsort但在PHP \MongoDB\Driver\Cursor類沒有sort方法調用函數sort MongoDB的,例如https://docs.mongodb.com/manual/reference/method/cursor.sort/ ...Mongodb光標方法排序[固定]

我通過修改解決了這個問題我的代碼

/** 
* @param $key 
* @param $value 
* @param $collection 
* @return array | \MongoDB\Driver\Cursor 
*/ 
static function simpleSelect($key, $value, $collection) 
{ 
    $con = \Core\Model\Mongo::getConnect(); 

    $query = new \MongoDB\Driver\Query(
     array(
      $key => $value 
     ), 
     array('sort' => array('time' => -1)) 
    ); 

    return $con->executeQuery(\Core\Helper::getDb()['mongodb']['db'] . '.' . $collection, $query); 
} 

方法查詢有2個參數,這個選項是數組可以包含排序,排序和其他選項的集合。但這不是完成代碼,因爲我想創建新的方法設置排序和其他選項...

p.s.我很抱歉我的英語。

回答

0

在PHP中用來排序的MongoDB集合的語法是

// Sort on field x, ascending 
$cursor->sort(array('x' => 1)); 

您的代碼可以被修改爲: -

static function simpleSelect($key, $value, $collection) 
{ 
    $con = \Core\Model\Mongo::getConnect(); 

    $query = new \MongoDB\Driver\Query(
     array(
      $key => $value 
     ) 
    ); 
    $cursor = $con->executeQuery(\Core\Helper::getDb()['mongodb']['db'] . '.' . $collection, $query); 
    $cursor->sort(array('x' => 1)); 
    return $cursor; 
} 
+0

是我回到這個'$ CON組> executeQuery'他返回此類'\ MongoDB \ Driver \ Cursor',但'sort'函數未定義。 – Naumov

+0

我不能用戶'MongoClient',因爲我的項目在php7。*和我找不到mongoClient擴展 – Naumov

+0

嘗試再次使用鍵作爲字段名執行查詢,數據必須在其上進行排序,值爲1,而不是$ collection傳遞$ cursor作爲參數。 – Webdev