我在下面的格式保存在MongoDB的数据find()方法从MongoDB中,返回结果,剿领域,变成JSON
{"_id": "VALVE22","state": "1","element": "BNK1FLOW","data":{"type": "SEN","descr": "TOWER6"}}
我有一个Ruby脚本下面的代码;
db = Mongo::Connection.new.db("cooler-lookup")
coll = db.collection("elements")
kitty = coll.find({"_id" => table[address][i], "state" => char}).to_a
'table[address][i]' and 'char'
是限定在更大的脚本数据馈送其他地方使用到该查找部分&变量。为了测试,这些可分别替换为“VALVE22”和“1”(这就是我在irb中测试的结果)
从命令行运行脚本时,脚本从有效查询中输出以下正确结果。
{"_id"=>"VLAVE22", "state"=>"1", "element"=>"BNK1FLOW", "data"=>{"type"=>"SEN", "descr"=>"TOWER6"}}
但我需要抑制_id and state
领域。我尝试过以各种方式使用:fields
修饰符,但无法删除字段。我已经在irb中进行了测试,并且随着有效查找,我还返回了=> nil
。我敢肯定这是非常简单的事情,但我不明白我需要什么能够JSON.generate
查询结果没有ID &国家字段,然后puts
它。
使用下面的代码我能够得到这个工作,但是当我试图做kittylitter = JSON.generate(kitty)
我得到了很多空[]
的以及我的有效结果。它看起来像是从数据库中失败的查询返回而没有记录。
多小时就被混淆后,我设法找到这段代码来解决这个问题
kitty.each do |key|
keyjson = JSON.generate(key)
puts keyjson
end
这给了我,我需要出去到底是什么 - 这是在1号线为有效的JSON结果。部分头部伤害了混淆来自于事实to.a
创建了一个数组,但是当我试图对结果kitty
执行数组类型的东西时,没有任何按预期工作。然后我试着把它当作一个哈希来处理,这导致了我上面那段代码!一旦我完成了所有工作......我错了被数组和哈希弄糊涂了,或者我错过了像我的数组一样明显的东西是或包含哈希?
感谢 - 不知道我在做什么,昨晚那么它不工作。也许花了很长时间看它变得困惑。这对我很有用,但是当我做'kittylitter = JSON.generate(kitty)'时,我得到了期望的结果,但是我也得到了很多空的'[]''有没有什么方法可以让我摆脱这些? – user3788685 2014-09-19 20:17:46
@ user3788685 - 你的意思是空{'}'?听起来就像你有一些匹配查询的文档,但没有除_id和状态之外的任何键。看看Ruby Array#select(http://www.ruby-doc.org/core-2.1.2/Array。html#method-i-select) – 2014-09-19 20:21:47
从命令行运行脚本时,它的'[]'我得到deffo而不是'{}'我想知道它是不是什么都没有返回的查询。当从table [address] [i]接收到数据时,它实际上做了8次查找,它们中的一部分,全部或全部都不会导致DB中的有效结果。数据库只包含一些对象,它们都有有效的全键,在数据库中根本不存在的东西根本不存在。我对你给出的链接进行了检查 - 我想我有一个'for(i = 0; i
user3788685
2014-09-19 20:28:55