1

我想在过滤器中的$oror$and子句的帮助下使用 MongoDB PHP7.1 驱动程序从 mongodb 获取数据。我试图构建查询来做同样的事情,但没有奏效。

这是我的示例代码:

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");

try {
   $filter = [
        '$or'  => [
          'age' => [ '$gt' => 40],
          'name' => 'abc'
        ]
      ];
   $query = new MongoDB\Driver\Query($filter);

   $rows = $manager->executeQuery("test.users", $query);


   foreach ($rows as $key => $val) {
      print_r($val);
   }
} catch(MongoDB\Driver\Exception $e) {
   echo $e->getMessage(), "\n";
   exit;
}

上面的代码给了我以下错误:

Fatal error: Uncaught MongoDB\Driver\Exception\ConnectionException: $or must 
be an array in C:\xampp\htdocs\local\demo.php:50 Stack trace: #0 
C:\xampp\htdocs\local\demo.php(50): MongoDB\Driver\Manager-
>executeQuery('test.users', Object(MongoDB\Driver\Query)) #1 {main} thrown 
in C:\xampp\htdocs\local\demo.php on line 50

请帮助我理解我做错了什么。

4

1 回答 1

2

添加来自@Veeram 的回答:将此作为我的过滤器,但不起作用:

$filter  = [
    '$and' =>
        ['date' => ['$gte' => $start_date]],
        ['date' => ['$lte' => $end_date]]
];

[]按照@Veeram 的建议添加了额外的内容。此配置适用于$and

$filter  = [
    '$and' => [
        ['date' => ['$gte' => $start_date]],
        ['date' => ['$lte' => $end_date]]
    ]
];
于 2018-08-25T05:13:10.523 回答