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、1 週間以内のデータが必要です。

このようなことは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 に答える