---
すでにJSONファイルがたくさんあるデータをRに食わせようと思って、CSVに変換しようとしたのだけど「こういうときはMongoDBをハブに使えばいいんじゃね?」ということを思いつき、いまさらながらR × MongoDBを試してみた記録である。
データは「Vue.jsを使ってBloggerの最新記事一覧を表示する」の記事にでてくるJSON結果のfeedのentryをバラしてcollectionに入れた。なお、どちらのライブラリもinsertする機能がついているが、その部分は試していない。
rmongodb
インストール
install.packages('rmongodb')使い方
rmongodbは、RからMongoDBにアクセスするためのライブラリのひとつ。mongodbのCライブラリのラッパーらしい。短い使いかたはこんなかんじ。mongodb.create で接続を作り、mongodb.findで検索し、cursorで処理する。この場合の処理はmongo.cursor.to.data.frame。
data.frameになる前に加工が必要だという場合は、こんな感じ。
Webを見ていると、クエリの組み立てにbson.*を呼んでいたりとかする例が多いのだけど、JSON文字列を渡せたり、listで渡せたりもするので、もうちょっと高レベルな関数ないかなと探してみるのもいいかもしれない。
参考
- http://cran.r-project.org/web/packages/rmongodb/vignettes/rmongodb_introduction.html
- http://rindai87.hatenablog.jp/entry/20110903/1315016488
- http://rud.is/b/2012/10/22/get-an-r-data-frame-from-a-mongodb-query/
- http://www.r-bloggers.com/r-and-mongodb/
RMongo
もうひとつRからMongoDBを使うライブラリにRMongoというのがある。こちらはJavaが必要。インストール
install.packages('RMongo')使い方
ネストされたところがJSON文字列というのがちょっと。。。
参考
テストケースがわかりやすい。感想
rmongodbは低レベル操作が目につくのに対し、RMongoのほうはそうでもないので、だいたいうまくやってくれるのかなーと思いきや、ネストされた構造の処理が(より)いまいちなので、rmongodbを使っていればいいのかなという感じだった。ただ、Rにあまり慣れていないせいもあると思うが、ちょっとでも加工が必要になってくると、かえって冗長な感じになってしまうので、データ構造によってはMongoDB->MongoDBでも、MongoDB->CSVででも、事前処理したほうがさくっと終わりそうだなという印象を受けた。
0 件のコメント:
コメントを投稿