PHP MongoDB ISOdate:在查询中不起作用

时间:2019-04-17 14:45:35

标签: php mongodb isodate

我正在尝试使用此代码在MongoDB上的PHP中查询文档:

$mongo = new MongoDB\Driver\Manager("mongodb://user:pwd@ip:27017/db");
$filter = [
"type" => "GSM",
"date" => [ '$gte' => new MongoDB\BSON\UTCDateTime(1555372800000) ]
];
$options = [];
$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $mongo->executeQuery('db.collection', $query);    

我可以连接到数据库,但是我得到一个空光标,没有结果。 如果我排除数组中的“日期”元素,一切正常,我可以在光标中看到文档并对其进行迭代。 这是var_dump($ filter)结果:

array(2) {
  ["type"]=>
  string(3) "GSM"
  ["date"]=>
  array(1) {
    ["$gte"]=>
    object(MongoDB\BSON\UTCDateTime)#3 (1) {
      ["milliseconds"]=>
      string(13) "1555372800000"
    }
  }
}

MongoDB Compass上的相同过滤器(包括“ date”参数)返回了大量文档,这是相应的过滤器:

{type:'GSM', date:{$gte: new ISODate('2019-04-16T00:00:00Z')}}

我该如何解决?

环境的详细信息: Ubuntu 18.04 LTS PHP 7.2.17 libmongoc捆绑的版本=> 1.13.0 MongoDB 3.4.19

0 个答案:

没有答案