MongoDB选择不超过一周的数据

时间:2013-10-16 09:34:26

标签: php mongodb aggregation-framework

所以我试图选择那些不是一周的数据,我需要这样的东西来自mysql:

WHERE date <= one week ago

这是我当前的查询:

$this->aggregate(
                array(
                    array('$sort' => array( '_id' => self::SORT_DESC)),
                    array('$match' => array( 'seen' => 0)),
                    array('$group' => array('_id'=>'$target_user',
                        'type' => array('$push'=> array('type' => '$type',
                            'title'=>'$title',
                            'link'=>'$link',
                            'dt'=>'$dt',
                            'own'=>'$own',
                            'usr'=>'$usr'))
                        )),
                    ));

dt中的字段$group是一个字符串日期,其存储方式如下:2013-10-14 14:53:11所以根据dt键,我需要的数据不早于一个星期。

可以在Mongo中完成这样的事吗?

1 个答案:

答案 0 :(得分:1)

使用MongoDate,您可以:

$this->aggregate(
    array(
       array('$match' => array( 'seen' => 0, 'dt' => array('$gte'=> new \MongoDate(strtotime('-1 week'))))),
       array('$sort' => array( '_id' => self::SORT_DESC)),
       array('$group' => array('_id' => '$target_user',
          'type' => array('$push'=> array('type' => '$type',
              'title'=>'$title',
              'link'=>'$link',
              'dt'=>'$dt',
              'own'=>'$own',
              'usr'=>'$usr'))
    )),
 ));