Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mongo php中的布尔查询问题_Php_Mongodb_Mongodb Php - Fatal编程技术网

mongo php中的布尔查询问题

mongo php中的布尔查询问题,php,mongodb,mongodb-php,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('ap

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

我在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 
有没有关于我可能做错了什么的暗示?提前感谢。

由于a的多个“子句”,您在查询中不需要$and。如果您取出
$和:[]
,您将得到一个更简单的

{ $or : [ { approved : true }, { approved : {$exists:false}, sold : {$ne:true} } ] }
当您将其转换为适合您的相应PHP时。

因为有多个“子句”的a,您不需要在查询中使用$and。如果您取出
$和:[]
,您将得到一个更简单的

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

当你把它转换成适合你的对应PHP时。

你根本不需要$,拿出$和:[],然后在shell中使用{$或:[{approved:true},{approved:{$exists:false},sell:{$ne:true}}}(你会得到同样的结果),然后在对应的PHP中尝试。谢谢你,就是这样!如果你不介意的话,你愿意写这个作为答案,这样我就可以接受它吗?你根本不需要$,拿出$和:[],然后在shell中使用{$或:[{approved:true},{approved:{$exists:false},salled:{$ne:true}]}(你会得到同样的结果),然后在相应的PHP中尝试。谢谢你,就是这样!如果你不介意的话,你愿意写下这个作为回答,这样我就可以接受了吗?