1

这是我要查询的语法

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/

我尝试谷歌搜索,很多人说如果它在 mongodb 版本中出错。

所以我的语法错了吗?还是我的mongodb版本错误,我的mongodb verison = 2.2.1?

谢谢

4

4 回答 4

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);
于 2012-11-27T06:45:55.760 回答
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);

参考

于 2012-12-13T04:08:00.093 回答
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);  

及其工作。

于 2012-11-27T06:39:03.917 回答
0

$or数组有额外的深度层。

尝试:

$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));
于 2012-11-27T06:27:43.857 回答