这是我要查询的syntaq
我收到错误的结果
[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版本的错误。
我的syntaq错了吗?或者我的mongodb版本错了,我的mongodb verison = 2.2.1?
感谢
答案 0 :(得分: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));
答案 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);
及其工作。
答案 2 :(得分: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);
答案 3 :(得分: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);