我需要根据一些布尔字段的值执行查询。这些字段在某些文档中可能不存在,因为它们是在稍后阶段添加的。
我在 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
关于我可能做错了什么的任何提示?提前致谢。