我一直在尝试使用带有聚合框架的 PHP MongoDB 驱动程序来过滤几个日期,然后再通过管道传输到 $group 中,但是匹配并没有对日期进行任何过滤,但是在过滤字符串和整数时它可以完美地工作.
这是我的管道数组和代码:
$date = new DateTime(); $date->sub(new DateInterval('PT' . $hours . 'H')); $mdate = new MongoDate($date->getTimestamp()); $ops = array( array('$match') => array( 'whenField' => array( '$gt' => $mdate ) ) );
$results = $this->collection->aggregate($ops);
这应该返回我的集合中过去 3 小时内“whenField”所在的所有文档,但它会返回我集合中的每个文档。然后我可以将“$gt”切换为“$lt”,它还返回集合中的每个文档。我已经将这个完全相同的匹配数组作为过滤器使用find($filter)
并正确过滤。日期比较是否与聚合框架 $match 不兼容,还是我犯了某种错误?