我从 MongoDB 获取数据如下:
@bs = coll2.find("date" => {"$gte" => initial_date, "$lte" => Time.now.utc})
它工作正常,但是当我渲染@bs 时,它发送空。
render :json => @bs
如果我做一个@bs.each 并将每个都渲染为json,它可以工作,但是,我想发送整个@bs。
谢谢
我从 MongoDB 获取数据如下:
@bs = coll2.find("date" => {"$gte" => initial_date, "$lte" => Time.now.utc})
它工作正常,但是当我渲染@bs 时,它发送空。
render :json => @bs
如果我做一个@bs.each 并将每个都渲染为json,它可以工作,但是,我想发送整个@bs。
谢谢
默认情况下,#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.....]