使用$ match按PHP MongoDB聚合框架按日期过滤

时间:2013-01-08 12:21:10

标签: php mongodb date aggregation-framework

我一直在尝试将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不兼容或者我是否犯了某种错误?

1 个答案:

答案 0 :(得分:3)

此处$ops错误,请尝试:

$ops = array(
    array('$match' => array(
        'whenField' => array(
            '$gt' => $mdate
        )
    )
);

相反