PHP MongoDB ISOdate: не работает в запросе - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь запросить документы в PHP на MongoDB с помощью этого кода:

$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);    

Я могу подключиться к БД, но я получаю пустой курсор без результатов. если я исключаю элемент "date" из массива, все в порядке, и я могу видеть документы в курсоре и перебирать его. это результат 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

...