1

所以我试图选择不超过一周的数据,我需要来自 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 中完成吗?

4

1 回答 1

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'))
    )),
 ));
于 2013-10-16T11:51:00.700 回答