Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
执行MongoDB';ruby中的s cursor.forEach()_Ruby_Mongodb - Fatal编程技术网

执行MongoDB';ruby中的s cursor.forEach()

执行MongoDB';ruby中的s cursor.forEach(),ruby,mongodb,Ruby,Mongodb,几天前,我刚刚开始使用Ruby的Sinatra进行实验,我正在尝试查询MongoDB,该方法工作得非常好,但是当尝试获取多个文档(即使用)时,会返回一个游标,我习惯使用该方法迭代所有返回的文档,但由于我对Ruby不熟悉,我很难弄明白 如果您能为我指出正确的方向,如果您知道Mongo/Ruby命令字典或备忘单,我将不胜感激 一些代码有助于解决此问题: #The following code is intentionally formatted the way it is, (i.e the cas

几天前,我刚刚开始使用Ruby的Sinatra进行实验,我正在尝试查询MongoDB,该方法工作得非常好,但是当尝试获取多个文档(即使用)时,会返回一个游标,我习惯使用该方法迭代所有返回的文档,但由于我对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

非常感谢您的回复/想法。

通常在ruby中,为了进行迭代,您只需使用
。每个
,但由于您只想将游标结果返回为JSON,因此只需将语句转过来即可

JSON.generate( settings.mongo_db['col'].find({"key" => /#{value}/i}).to_a )
因此,应该将其序列化为文档数组


还可以在中查看其他方法。

太棒了!我从来不知道你可以将光标投射到数组!干杯,伙计:)@Haze先生道歉。“剪切粘贴”再次吸引我,错过了
。\u a
方法。不用担心,你帮了我很多忙,谢谢!我真的不知道你能像那样操纵mongo光标。(对mongo&ruby来说有点陌生,不过它们非常棒)。