mongo php中的布尔查询问题

时间:2013-06-01 03:18:58

标签: php mongodb mongodb-php

我需要根据一些布尔字段的值执行查询。这些字段可能在某些文档中不存在,因为它们是在稍后阶段添加的。

我在shell中测试了查询并且运行正常:

db.product.find({$or: [{approved:true},{$and: [{approved:{$exists:false}}, {sold:{$ne:true}}]}]})

但尝试对PHP驱动程序执行相同操作似乎不起作用:

$condA = array('approved' => true);
$condB = array('approved' => array('$exists' => false), 'sold' => array('$ne' => true));

$query = array('pid' => $prodId, '$or' => array($condA, array('$and' => $condB)));

我测试了一些变体,但我总是在日志中收到此错误:

assertion 13086 $and/$or/$nor must be a nonempty array 

任何关于我可能做错的提示?提前谢谢。

1 个答案:

答案 0 :(得分:1)

由于query are interpreted as "and"的多个“子句”,您在查询中不需要$和。如果您取出$and:[ ],最终会得到一个更简单的

{ $or : [ { approved : true }, { approved : {$exists:false}, sold : {$ne:true} } ] }

当您将其转换为适合您的相应PHP时。