Данные в MongoDB хранятся в BSON, который не является JSON.
Драйвер ruby выполняет десериализацию (BSON :: BSON_CODER.deserialize) в методе read_documents. Если вы хотите свернуть свой собственный 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
Другой альтернативой может быть использование HTTP-интерфейса MongoDB REST , который обеспечивает JSON. Но вам нужно будет иметь некоторый контроль доступа в вашем приложении и, в основном, запросы прокси.