将mongo json文档反序列化为ruby
我正在编写一个脚本,用于读取mongo oplog并将记录复制到sql表。我面临的问题是我无法从mongo完全获得对ruby的反序列化 例如,这是来自oplog的bson记录将mongo json文档反序列化为ruby,ruby,serialization,mongodb,deserialization,Ruby,Serialization,Mongodb,Deserialization,我正在编写一个脚本,用于读取mongo oplog并将记录复制到sql表。我面临的问题是我无法从mongo完全获得对ruby的反序列化 例如,这是来自oplog的bson记录 ... "o" : {"interval":{"start":"tue 21 2011","end":"wed 22 2011"}} 现在我能做到了 doc["o"]["interval"] 我得到 starttue 21 2011 endwed 22 2011 但如果我这样做了 doc["o"]["interval
... "o" : {"interval":{"start":"tue 21 2011","end":"wed 22 2011"}}
现在我能做到了
doc["o"]["interval"]
我得到
starttue 21 2011 endwed 22 2011
但如果我这样做了
doc["o"]["interval"]["start"] or doc["o"]["interval"]["end"]
我得到一个错误,因为
mongo_reader.rb:48:in `ReadCollection': undefined method `[]' for nil:NilClass (NoMethodError)
那么如何访问集合的内部元素呢
#<BSON::OrderedHash:0x23103e4 {
"ts" => #<BSON::Timestamp:0x4620708 @increment=2, @seconds=1320984261>,
"op" => "u",
"ns" => "devices.d4d8ff6cb092541a5746eafd3.colletio",
"o2" => #<BSON::OrderedHash:0x2310300 {
"_id" => BSON::ObjectId('4ebc9ebd0925ec7cc70d273f')
}>,
"o" => #<BSON::OrderedHash:0x231027c {
"$set" => #<BSON::OrderedHash:0x2310240 {
"interval" =>
#<BSON::OrderedHash:0x2310210 {
"start" => Fri Nov 11 04:04:13 UTC 2011,
"end" => Fri Nov 11 04:04:16 UTC 2011
}>,
"classification" =>
#<BSON::OrderedHash:0x2310180 {
"activity" => "Handling",
"entity" => "Workpiece",
"isPlanned" => true,
"confidence" => 0,
"source" => "4ebbf18a0925ec7cc6ebdb78"
}>,
"parts" => nil
}>
}>
}>
##,
“op”=>“u”,
“ns”=>“设备.d4d8ff6cb092541a5746eafd3.集合”,
“o2”=>#BSON::ObjectId('4ebc9ebd0925ec7cc70d273f')
}>,
“o”=>##
#2011年11月11日星期五04:04:13 UTC,
“结束”=>2011年11月11日星期五04:04:16 UTC
}>,
“分类”=>
#“处理”,
“实体”=>“工件”,
“isPlanned”=>正确,
“信心”=>0,
“源”=>“4ebbf18a0925ec7cc6ebdb78”
}>,
“零件”=>零
}>
}>
}>
是的,文档正在按预期的方式发布,我已更新文档。检查输出,请检查它,如果需要更改im访问内容的方式,请告诉我,那里似乎有额外的间接级别;$set
属性。好的,谢谢。键我可以解决这个问题