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
通常有帮助。
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
通常有帮助。