MongoDB поиск по дате не работает в php7 - PullRequest
0 голосов
/ 24 сентября 2018

Я сделал запрос подсчета в php 5.6

$start_time = new MongoDate(strtotime('2018-09-15 00:00:00'));
$end_time   = new MongoDate(strtotime('2018-09-20 23:59:59'));

$m = new Mongo("mongodb://localhost:27017");
$mongodb = $m->adplaydsp;
$query['created_at'] = array('$gte' => $start_time, '$lte' => $end_time);
$total_request = $mongodb->bid_request->find($query)->timeout(-1)->count();

Но когда я переписываю код в синтаксисе PHP 7, я не могу считать по дате

$start_time = new MongoDB\BSON\UTCDateTime((new DateTime('2018-09-15 00:00:00')));
$end_time   = new MongoDB\BSON\UTCDateTime((new DateTime('2018-09-20 23:59:59')));

$manager = new \MongoDB\Driver\Manager("mongodb://localhost:27017");
$reqCommand = new \MongoDB\Driver\Command(["count" => "bid_request", "query" => ['gte' => $start_time, 'lte' => $end_time]]);
$reqCount = $manager->executeCommand('adplaydsp', $reqCommand);
$reqTotal = $reqCount->toArray();

1 Ответ

0 голосов
/ 25 сентября 2018

Я пропустил параметр поля даты в команде.Решение ниже

$manager = new \MongoDB\Driver\Manager("mongodb://localhost:27017");
$reqCommand = new \MongoDB\Driver\Command(["count" => "bid_request", "query" => ['created_at' => ['$gte' => $start_time, '$lte' => $end_time]]]);
$reqCount = $manager->executeCommand('adplaydsp', $reqCommand);
$total_request = $reqCount->toArray()[0]->n;
...