使用MongoDB中的数据返回JSON

时间:2011-05-11 21:44:28

标签: ruby-on-rails-3 mongodb mongodb-ruby

我从MongoDB获取数据如下:

@bs = coll2.find("date" => {"$gte" => initial_date, "$lte" => Time.now.utc})

它工作正常,但是当我渲染@bs时,它会发送空。

  render :json => @bs

如果我执行@ bs.each并将每个渲染为json,它可以工作,但是,我想发送整个@bs。

谢谢

1 个答案:

答案 0 :(得分:2)

默认情况下,#find返回Mongo :: Cursor对象,而不是实际结果。您将首先将cursur(@bs)转换为包含结果的数组,然后将其渲染为json。

render :json => @bs.to_a.to_json

请注意,由于它是一个游标,一旦您返回结果或开始迭代它们,那么to_a调用将不会返回所有结果。您需要调用rewind!来重置结果集:

> @bs.to_a
# => [{"_id" => BSON::ObjectID.....]
> @bs.to_a
# => []
> @bs.rewind!
# => true
> @bs.to_a
# => [{"_id" => BSON::ObjectID.....]