MongoDB 嵌套 $or 查询

MongoDB Nested $or 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

我做错了什么?

您确实打算使用 "dot notation" 来引用嵌入字段:

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

否则,您使用的表示法意味着嵌入级别中存在的 "only" 元素是您指定的元素。这是不正确的,因为有多个键。所以 "dot notation" 通过引用不同的键解决了这个问题。

PHP 数组符号在这里没有帮助,但 $or 也需要像 [] 一样是一个包装 "real" 数组。

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