Ruby on rails rails中的原始mongodb查询

Ruby on rails rails中的原始mongodb查询,ruby-on-rails,mongodb,mongoid,Ruby On Rails,Mongodb,Mongoid,我有一个Rails/Mongoid应用程序,它使用highcharts在客户端显示数据。现在,为了将数据传递给Javascript,我在模板文件中使用Mongoid查询和Rails'as_json/to_json。这在我看来效率很低,因为json数据必须解析为ruby结构,然后重新转换为json。当有少量数据时,这是可以的,但在我的例子中,可能有很多 因此,我的问题是,我如何执行原始mongodb查询,并直接将输出写入Rails响应缓冲区,而不进行Ruby JSON序列化/反序列化?mongod

我有一个Rails/Mongoid应用程序,它使用highcharts在客户端显示数据。现在,为了将数据传递给Javascript,我在模板文件中使用Mongoid查询和Rails'as_json/to_json。这在我看来效率很低,因为json数据必须解析为ruby结构,然后重新转换为json。当有少量数据时,这是可以的,但在我的例子中,可能有很多


因此,我的问题是,我如何执行原始mongodb查询,并直接将输出写入Rails响应缓冲区,而不进行Ruby JSON序列化/反序列化?

mongodb中的数据存储在BSON中,而不是JSON。 ruby驱动程序在read_documents方法中进行反序列化(BSON::BSON_CODER.deserialize)。如果您想将自己的BSON转换为JSON,则需要实现BSON::BSON_coder.deserialize,并可能在mongo ruby驱动程序中重写更多部分。 但是,如果这是一个可以接受的开销,那么您只需将ActionController::Metal子类化,并执行如下操作:

class ChartController < ActionController::Metal
  def chart
    res = fetch_data_from_mongodb
    self.content_type = 'application/json'
    self.response_body = res.to_json
  end
end
class ChartController

另一种选择可能是使用MongoDB的HTTP接口,该接口提供JSON。但是,您的应用程序中必须有一些访问控制,基本上还有代理请求。

您能提供一些示例吗?