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
我做错了什么?
答案 0 :(得分:0)
您真的打算使用"dot notation"来引用嵌入字段:
$blogInfoRaw = $collection->find(
array(
'$or' => array(
array( 'blogCategory.displayAndLightMeasurement' => '1' ),
array( 'blogCategory.LEDAndDisplayTestInstrument' => '1')
)
)
);
否则,您使用的符号表示嵌入级别中存在的“仅”元素是您指定的元素。这不是真的,因为有多个键。所以“点符号”通过引用不同的键来解决这个问题。
PHP数组表示法在这里没有帮助,但$or
也需要像[]
一样包装“真实”数组。
与MongoDB官方示例相比,发布json_encode
通常会有所帮助。