php - 未捕获的 MongoDB\Driver\Exception\ConnectionException : $or must be an array - PHP

标签 php mongodb

我正在尝试使用 MongoDB's PHP driver$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);

最佳答案

经过更多研究,我似乎误解了 $or 运算符,我将其解释为您只需指定一个键/值表达式数组,如果匹配,则结果是 true

$filter = ['$or' => ['subdomain' => $postSub, 'email' => $postEmail]];

为了解决这个问题,我只需要为每个表达式指定一个数组对象,因为多个表达式的数组在 MongoDB 中的计算结果为 $and

所以决议是:

$filter = ['$or' => [['subdomain' => $postSub], ['email' => $postEmail]]];

关于php - 未捕获的 MongoDB\Driver\Exception\ConnectionException : $or must be an array - PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42699474/

相关文章:

caching - 带 memcached 或 NOSQL 数据库(如 MongoDB/CouchDB)的 RDMS?

mongoDB 2.2.1 - 数据库无效

php - 在 foreach 循环中连接到 MySQL 会减慢我的 php 页面

php - 将 PHP MySql 与 Flex 捆绑在一起提供给客户端

javascript - XMLHttpRequest 无法加载文件 :

arrays - Mongodb - 将具有动态字段的映射转换为数组

mongodb - 获取 MongoDB 中存在的字段的记录数

php - 如何获取laravel模型中的表属性

php - 用于检查表单数据的 JavaScript 不起作用

javascript - 来自 MongoDB 键的动态频率图