未捕获的 MongoDB\Driver\Exception\ConnectionException:$or 必须是一个数组 - PHP

9

我正在尝试使用MongoDB的PHP驱动程序,使用$or运算符进行查询,但是出现了以下错误:

Fatal error: Uncaught MongoDB\Driver\Exception\ConnectionException: $or 
must be an array in /path/to/file.php:83 Stack trace: #0 /path/to/file.php(83):
MongoDB\Driver\Manager->executeQuery('userAccou...',
Object(MongoDB\Driver\Query)) #1 {main} thrown in /path/to/file.php on line 83

这是我的代码:
postSub = $_POST['register']['subdomain'];
$postEmail = $_POST['register']['email'];
$filter = ['$or' => ['subdomain' => $postSub, 'email' => $postEmail]];

$query = new MongoDB\Driver\Query($filter);
$cursor = $mongo->executeQuery('DB_Name.Collection_Name', $query);
1个回答

13
在进行了更多的研究后,我发现我误解了$or运算符的含义,我之前认为只需要指定一个由键/值表达式组成的数组,如果任何一个匹配成功,则结果为true
$filter = ['$or' => ['subdomain' => $postSub, 'email' => $postEmail]];
为了解决这个问题,我只需要为每个表达式指定一个数组对象,因为在MongoDB中,多个表达式的数组会被评估为$and
所以解决方法是:
$filter = ['$or' => [['subdomain' => $postSub], ['email' => $postEmail]]];

感谢分享,它对我有帮助。 - Alyas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接