我正在尝试从我的Laravel应用程序发送一个mongodb聚合,它只聚合设置日期范围内的数据。该应用程序有一个date range picker,它返回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();
上面只是聚合的匹配阶段,因为没有它,其余的聚合似乎工作正常。使用此日期范围,它返回一个空数组
这是我的应用目前发送给mongo的内容:
event_date: {$gt: "ISODate('2017-01-10T00:00:00+01:00')", $lt: "ISODate('2018-01-10T23:59:59+01:00')"}
我是php和mongo的新手,这场斗争给我带来了一些严重的麻烦,所以我很感激任何关于此的建议