Rails中的原始mongodb查询

| 我有一个Rails / Mongoid应用程序,该应用程序使用highcharts显示客户端数据。现在,要将数据传递给Javascript,我在模板文件中使用了Mongoid查询和Rails的as_json / to_json。这对我来说似乎效率很低,因为必须将json数据解析为ruby结构,然后将其重新转换为JSON。当数据量很少时可以这样做,但就我而言,可以有很多数据。 所以我的问题是,我该如何执行原始mongodb查询,而无需通过Ruby JSON序列化/反序列化直接将输出直接写入Rails响应缓冲区?     
已邀请:
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
另一种选择是使用MongoDB的REST HTTP接口,该接口提供JSON。但是您必须在应用程序中具有访问控制,并且基本上必须具有代理请求。     

要回复问题请先登录注册