我正在尝试使用$or使用MongoDB的PHP驱动程序的运算符进行查询,但是出现以下错误:
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
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
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);
Run Code Online (Sandbox Code Playgroud)
经过更多研究后,我似乎误解了$or运算符,我将其解释为意味着您只需指定键/值表达式的数组,如果有匹配项,则结果为true。
$filter = ['$or' => ['subdomain' => $postSub, 'email' => $postEmail]];
Run Code Online (Sandbox Code Playgroud)
要解决此问题,我只需要为每个表达式指定一个数组对象,因为在MongoDB中,多个表达式的数组的计算结果为$and。
因此,解决方案是:
$filter = ['$or' => [['subdomain' => $postSub], ['email' => $postEmail]]];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1995 次 |
| 最近记录: |