2013-10-26 2 views
-1

일의 각 그룹에 대한 전체 "페이지 뷰"를 얻기 위해 몽고의 집계를 사용하여이 작업을 수행하는 방법.내가 지금 집계 작업을하지만 난 그냥받지 못했습니다 마련하기 위해 나는 몇 일 동안 시도

나는 다음과 유사한 보이는 컬렉션이 있습니다. 내가 할 노력하고있어

_id: ObjectId("52672ca368a56f481d000045"), 
totalviews: 5, 
views: [ 
    {date: ISODate("2013-10-23T01:55:47Z") }, 
    {date: ISODate("2013-10-23T01:55:50Z") }, 
    {date: ISODate("2013-10-23T23:31:08Z")}, 
    {etc.} 
] 

그래서 나는 그 일에 대한 총 ("조회"에서) 날짜 목록을 표시 할 수 있습니다 매일 뷰의 총 수를 얻을 수있다.

누군가는이 작업을 수행 할 수있는 방법 저를 게재 할 수 있습니까?

당신에게

편집 감사 - 코드가 여기에 올바르게 작품이 다른 사람 도움이 경우에 제공되는 솔루션의 PHP 코드 아래 :

$ops = array(
array('$unwind' => '$views'), 
array('$project' => array('date'=>array(
    'day'=>array('$dayOfMonth'=>'$views.date'), 
    'month'=>array('$month'=>'$views.date'), 
    'year'=>array('$year'=>'$views.date')) 
)), 
array('$group'=>array('_id'=>'$date','views'=>array('$sum'=>1))) 
); 

$data = $collection->aggregate($ops); 
+1

예를 들어, 입력 및 예상 출력을 제공하십시오 :

db.foo.aggregate( {$unwind: "$views"}, {$project: {date: { day: {$dayOfMonth: "$views.date"}, month: {$month: "$views.date"}, year: {$year: "$views.date"}, }}}, {$group: {_id: {id: "$_id", date: "$date"}, views: {$sum: 1}}} ) 

당신이 하나 그룹의 위상을 대체 컬렉션의 하루 총 조회수을합니다. 지금 당신의 질문은 명확하지 않습니다. 문서 당 하루 또는 일별 조회수가 컬렉션 당 하루 단위로 표시 되길 원하십니까? 지금까지 시도한 것을 보여 주어야합니다. – zero323

답변

0

이 트릭을 할해야합니다.

{$group: {_id: "$date", views: {$sum: 1}}} 
+0

감사합니다. 나는 날짜를 정확하게 깨는 방법을 놓쳤다. – pyrosz

+0

도움이 되었다면 답을 표시하십시오. – azz0r