Mongoid只用一次查询即可获得多个数据

时间:2015-05-26 11:58:55

标签: ruby-on-rails mongodb mongoid

当我的页面加载时,它会呈现Highcharts数据(如[1,2,5,10,40]

控制器

@server = Server.find(params[:id])
@statuses = @server.statuses.where(:created_at => 1.days.ago..Time.now)
@statuses.each do |status|
    if status.players.nil?
        @chartData << 0
    else
        @chartData << status.players
    end
end

查看

... ,"data": <%=chartData.to_a%> ...

但是在这段代码中,我遇到了性能问题。

  • 获取第一个数据
  • 获取第二个数据
  • 获取第三个数据
  • 获取第四个数据
  • ...

加载每个页面,它会获得具有多个查询的所有@statuses。 (不是单个查询),页面变慢。

我是否可以仅使用像MySQL(SELECT * FROM sometable)这样的查询来获取所有数据?

加入

抱歉,我混淆了一些代码。

1 个答案:

答案 0 :(得分:0)

试试此代码

@statuses = Server.includes(:statuses).where(:created_at => 1.days.ago..Time.now)
 @statuses.each do |status|
   if status.players.nil?
     @chartData << 0
   else
     @chartData << status.players
  end
end
相关问题