我几天前刚刚开始尝试使用Ruby的Sinatra,我正在尝试查询MongoDB,find_one()
方法效果非常好,但是在尝试获取多个文档时(即使用find()
)返回一个游标,我习惯使用cursor.forEach()
方法迭代所有返回的文档,但由于我是ruby的新手,我很难搞清楚它
如果你能指出我正确的方向会很棒,如果你知道Mongo / Ruby命令词典或备忘单,我会非常感激。
一些代码可以帮助解决这个问题:
#The following code is intentionally formatted the way it is, (i.e the case
#insensitive, the way I'm calling the database), all that is irrelevant,
#but there to show you what I'm doing; I might be screwing up somewhere.
#works fine, returns JSON of required document
settings.mongo_db['col'].find_one({"key" => /#{value}/i}).to_json
#returns cursor, need to iterate
settings.mongo_db['col'].find({"key" => /#{value}/i}).to_json
非常感谢您的回复/想法。
答案 0 :(得分:1)
通常在ruby中为了迭代你只需使用.each
但是因为你只想将结果返回给JSON只需转动语句
JSON.generate( settings.mongo_db['col'].find({"key" => /#{value}/i}).to_a )
所以应该序列化为一个文档数组。
另请参阅JSON package中的其他方法。