array( 'statType'=>StatisticModel::STAT_TYPE_PAGE, 'date'=>array( '$gte'=>new MongoDate($startDate) ) ) ), array( '$group'=>array( "_id"=>array( 'date'=>array( "day"=>array('$dayOfMonth'=>'$date'), "month"=>array('$month'=>'$date'), "year"=>array('$year'=>'$date') ), 'user'=>'$user.id', ), "visualizzazioni"=>array( '$sum'=>1 ), "isNew"=>array( '$sum'=>array( '$cond'=>array( array('$eq'=>array('$user.isNew',true)), 1, 0 ) ) ) ) ), array( '$group'=>array( "_id"=>array( 'date'=>'$_id.date' ), "visualizzazioni"=>array( '$sum'=>'$visualizzazioni' ), "unici"=>array( '$sum'=>'$isNew' ), "visitatori"=>array( '$sum'=>1 ) ) ), array( '$sort'=>array( "_id.date.year"=>1, "_id.date.month"=>1, "_id.date.day"=>1 ) ) ); return $rval; } public static function getMonthlyVisualizationPipeline($startDate){ $rval = array( array( '$match'=>array( 'statType'=>StatisticModel::STAT_TYPE_PAGE, 'date'=>array( '$gte'=>new MongoDate($startDate) ) ) ), array( '$group'=>array( "_id"=>array( 'date'=>array( "month"=>array('$month'=>'$date'), "year"=>array('$year'=>'$date') ), 'user'=>'$user.id', ), "visualizzazioni"=>array( '$sum'=>1 ), "isNew"=>array( '$sum'=>array( '$cond'=>array( array('$eq'=>array('$user.isNew',true)), 1, 0 ) ) ) ) ), array( '$group'=>array( "_id"=>array( 'date'=>'$_id.date' ), "visualizzazioni"=>array( '$sum'=>'$visualizzazioni' ), "unici"=>array( '$sum'=>'$isNew' ), "visitatori"=>array( '$sum'=>1 ) ) ), array( '$sort'=>array( "_id.date.year"=>1, "_id.date.month"=>1 ) ) ); return $rval; } /** * Il risultato di questa pipeline restituisce un oggetto con _id.banner contenente l'id del banner e visualizzazioni contenente il numero * di visualizzazioni per oggi ordinati in modo crescente per visualizzazioni * @param unknown $position * @return multitype:multitype:multitype:number multitype:multitype:unknown number multitype:MongoDate multitype:multitype:multitype:number multitype:multitype:string */ public static function getTodaysBannerVisualizationPipeline($position){ $rval = array( array( '$match'=>array( 'statType'=>StatisticModel::STAT_TYPE_BANNER_IMPRESSION, 'content.position'=>$position, 'date'=>array( '$gte'=>new MongoDate(strtotime("today")) ) ) ), array( '$group'=>array( "_id"=>array( 'banner'=>'$content.banner', ), "visualizzazioni"=>array( '$sum'=>1 ) ) ), array( '$sort'=>array( "visualizzazioni"=>1 ) ) ); return $rval; } } ?>