mongodb使用OR和AND查找查询

时间:2016-10-21 08:15:52

标签: php mongodb mongodb-query

如果查询,我有以下内容。

if(($version[0] == 1)||($version[1] > 6)||($version[2]>=14 && $version[1] == 6))   
{
  echo "true";
}

现在我希望将此查询转换为mongodb查询。 在mongo集合中,我有以下条目:

{
  "main_version" : 0,
  "sub_version" : 6,
  "build_version" : 14,
  "module" : "Co2",
  "active" : 1
}

当我尝试以下查询时,我收到一个mongo错误。

$where = array('$or' => array(
                array('main_version'=> (int)$version[0]),
                array('sub_version'=> array('$gt'=> (int)$version[1])),
                array('$and' =>  array('build_version' => array('$gte'=> (int)$version[2])),
                                  array('sub_version' => (int)$version[1]),
                     ),
                array('active'=> 1),
                ),
               );

错误:无法规范化查询:BadValue并需要一个数组'

有人知道如何解决此查询吗?

2 个答案:

答案 0 :(得分:2)

好吧,6年前在php工作但我认为你的$和运算符应该接受一系列查询,

类似于array('$and' => array(array('build_version' => array('$gte'=> (int)$version[2])), array('sub_version' => (int)$version[1]))

'和'接受数组,因为你正在为'或'做opeartor,这里传递查询而不是数组。

答案 1 :(得分:0)

是的,额外的阵列是溶剂。 TX