2014-04-04 2 views
3

mongoid를 rails4와 함께 사용하고 있습니다. 아래 코드를 사용하고있는 차트 (통계 화면)를 제공하기 위해 결과별로 그룹화해야합니다.그룹 mongoid in rails를 사용하여

@comments_stats = {} 

    comments_data = Comment.where(:created_at.lte => Date.today-10.days).group_by {|d| d.created_at.to_date } 

    comments_data.map{ |a| @comments_stats[a[0].strftime("%d-%m-%y")] = a[1].size} 

{ 
"1-1-2014" => 2, 
"3-1-2014" => 1, 
"4-1-2014" => 2, 
"6-1-2014" => 4 

} 

처럼 줄 것이다 그러나 나는

{ 
"1-1-2014" => 2, 
"2-1-2014" => 0, 
"3-1-2014" => 1, 
"4-1-2014" => 2, 
"5-1-2014" => 0, 
"6-1-2014" => 4 

} 

아래 중 하나는 쿼리보다 단순화하는 방법을 제안처럼합니다.

감사합니다. 프라 사드.

답변

7

당신이 뭔가를 시도 할 수 있습니다 : 그것은 어떤 문제가 다운 대신지도의 select``에 더 좁은 것을 사용하는 것도 가능

+0

을 가질 수 있도록

@comments_stats = {} last_date = Date.today - 10.days comments_data = Comment.where(:created_at.lte => last_date).group_by {|d| d.created_at.strftime("%d-%m-%y")} first_date = Date.parse(comments_data.keys.min) (first_date..last_date).map do |n_date| day = n_date.strftime("%d-%m-%Y") @comments_stats[day] = comments_data[day] ? comments_data[day].size : 0 end 

나는 그것을 테스트하지 않았습니다 –

관련 문제