MongoDB嵌套$或查询

时间:2015-03-17 14:57:05

标签: php mongodb mongodb-query

Mongo条目示例:

array(
    'name' => 'blog one',
    'blogCategory' => array(
        'displayAndLightMeasurement' => '1',
        'LEDAndDisplayTestInstrument' => '0'
    )
);

像这样的查询工作正常:

$blogInfoRaw = $collection->find(array('blogCategory' => array('displayAndLightMeasurement' => '1')));

当我尝试'$or'这样查询时:

$blogInfoRaw = $collection->find(array('$or' => array('blogCategory' => array('displayAndLightMeasurement' => '1')),array('blogCategory' => array('LEDAndDisplayTestInstrument' => '1'))));

我收到此错误:

$or requires nonempty array

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您真的打算使用"dot notation"来引用嵌入字段:

$blogInfoRaw = $collection->find(
    array(
       '$or' => array(
           array( 'blogCategory.displayAndLightMeasurement' => '1' ),
           array( 'blogCategory.LEDAndDisplayTestInstrument' => '1')
       )
    )
);

否则,您使用的符号表示嵌入级别中存在的“仅”元素是您指定的元素。这不是真的,因为有多个键。所以“点符号”通过引用不同的键来解决这个问题。

PHP数组表示法在这里没有帮助,但$or也需要像[]一样包装“真实”数组。

与MongoDB官方示例相比,发布json_encode通常会有所帮助。