私はmongodbバックアップから新しいレールアプリにインポートしたいデータをたくさん持っています(mongoを使って開発していました、今はactiverecordに戻っています)。rails appでmongodb backupのデータを使用します。つまり、rubyを使用してBSONをJSONに変換しますか?
明らかにBSON.deserialize(doc)
を試しましたが、最初のレコードのみを返します。私が間違っていることは何ですか? BSONファイルをJSONや他の使用可能な形式に変換する簡単な方法はありますか?
編集:これはほとんど最善の方法ではありませんが、私はルビーシェルスクリプト(bsondump
、mongodbの一部)を使用してそれらを変換することができました。
#!/usr/bin/env ruby
bson_files = Dir['./*.bson']
bson_files.each do |file|
tmp_file_name = file+".tmp"
new_file_name = file+".json"
system("bsondump "+file+" > "+tmp_file_name)
file = File.open(tmp_file_name)
contents = []
file.each {|line| contents << line }
contents = "["+contents[0..-2].join.gsub(/}\n/,"},\n")[0..-3].gsub(/ObjectId\((.{26}) \)/,"\\1").gsub(/Date\(([0-9]*) \)/,"\\1")+"]"
out = File.open(new_file_name, 'w')
out.write(contents)
end
さらに良い解決法があります。