Я пытаюсь отправить агрегацию mongodb из моего приложения Laravel, которая агрегирует только данные в диапазоне дат установки. Приложение имеет Выбор диапазона дат, который возвращает fromDate и toDate, которые я конвертирую в формат ISODate и затем передаю переменные в конвейер агрегации, как показано ниже:
private function getMongoData($fromDate = null, $toDate = null){
$collection = (new Client())->database->collection;
$fromDate = "ISODate('".$fromDate."')";
$toDate = "ISODate('".$toDate."')";$pipeline = [
[
'$match' => [
'event_date' => ['$gt' => $fromDate, '$lt' => $toDate],
],
],
];
$result = $collection->aggregate($pipeline)->toArray();
Выше приведен только этап сопоставления агрегации, поскольку без него остальная часть агрегации работает нормально. С этим диапазоном дат возвращает пустой массив
Это то, что мое приложение отправляет в Монго:
event_date: {$gt: "ISODate('2017-01-10T00:00:00+01:00')", $lt: "ISODate('2018-01-10T23:59:59+01:00')"}
Я довольно новичок в php и mongo, и эта борьба вызывает у меня серьезные головные боли, поэтому я буду признателен за любые советы по этому вопросу.
Задача ещё не решена.
Других решений пока нет …