我一直在尝试将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);
这应该返回我的集合中'whenField'在过去3小时内的所有文档,但它会返回我的集合中的每个文档。然后我可以将'$ gt'切换为'$ lt',它还会返回集合中的每个文档。我把这个完全相同的匹配数组作为过滤器并使用find($filter)
并正确过滤。 Date比较是否与聚合框架$ match不兼容或者我是否犯了某种错误?
答案 0 :(得分:3)
此处$ops
错误,请尝试:
$ops = array(
array('$match' => array(
'whenField' => array(
'$gt' => $mdate
)
)
);
相反