2012-11-27 115 views
1

這是我syntaq查詢

http://pastebin.com/q05EBSUJ

我對結果有錯誤

[Tue Nov 27 13:05:16 2012] [error] [client 127.0.0.1] PHP Fatal error: Uncaught exception 'MongoCursorException' with message 'invalid operator: $or' in /var/www/ 

我嘗試使用Google,很多的說,如果它在MongoDB的版本錯誤。

所以我的syntaq錯了?或者我的mongodb版本錯誤,我的mongodb版本= 2.2.1?

感謝

回答

0

您有$或陣列深度的額外層。

嘗試:

$result = 
    $mo->find(array(
      "node" => "stream", 
      "$or" => array("user_id" => $this->session->userdata('user_id'), 
           "to" => $this->session->userdata('user_id')) 
     ->limit(5) 
     ->sort(array("time" => -1)); 
0

@tpae其無法正常工作。

我有我自己的解決方案。

$result = $mo->find(
     array('$or' => array(
     array(
      'node' => 'stream', 
      'user_id' => $this->session->userdata('user_id') 
     ), 
     array(
      'node' => 'stream', 
      'to' => $this->session->userdata('user_id') 
     ) 
    ) 
    ) 
)->sort(array('time' => -1))->limit(5); 

及其工作。

+1

您可以移動$的「節點」外或因爲它是這兩個條款,一個小點,但還是一個值得noteing – Sammaye

0

使用下面的代碼

$result = $mo->find(
     array(
     'node' => 'stream', 
     array('or' => array(
      'user_id' => $this->session->userdata('user_id'), 
      'to' => $this->session->userdata('user_id') 
     ) 
    ) 
    ) 
)->sort(array('time' => -1))->limit(5); 

,而不是

$result = $mo->find(
     array(
     'node' => 'stream', 
     array('$or' => array(
      'user_id' => $this->session->userdata('user_id'), 
      'to' => $this->session->userdata('user_id') 
     ) 
    ) 
    ) 
)->sort(array('time' => -1))->limit(5); 
0

請看下面的例子,它使用$or操作員從嵌入文檔中選擇字段:

$collection->find([ 
    // $or (array) 
    '$or' => [ 
     ['key 1' => 'value 1'], // (array) 
     ['key 2' => 'value 2'] // (array) 
    ] 
]); 

嘗試:

$result = $mo->find([ 
    // $or (array) 
    '$or' => [ 
     ['user_id' => $this->session->userdata('user_id')], // (array) 
     ['to'  => $this->session->userdata('user_id')] // (array) 
    ], 
    'node' => 'stream', 
])->sort(['time' => -1])->limit(5); 

References

+0

我只知道的一樣,在PHP MongoDB的查詢可以使用元組,就像你的。 ['user_id'=> $ this-> session-> userdata('user_id')]。讓我嘗試 –