ページ

2014-12-12

RからMongoDBにアクセスする2つのライブラリ

これは、R Advent Calendar 2014 12日目および MongoDB Advent Calendar 2014 12日目の記事です。

---
すでに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で渡せたりもするので、もうちょっと高レベルな関数ないかなと探してみるのもいいかもしれない。

参考


RMongo

もうひとつRからMongoDBを使うライブラリにRMongoというのがある。こちらはJavaが必要。

インストール

install.packages('RMongo')

使い方





ネストされたところがJSON文字列というのがちょっと。。。

参考

テストケースがわかりやすい。

感想

rmongodbは低レベル操作が目につくのに対し、RMongoのほうはそうでもないので、だいたいうまくやってくれるのかなーと思いきや、ネストされた構造の処理が(より)いまいちなので、rmongodbを使っていればいいのかなという感じだった。

ただ、Rにあまり慣れていないせいもあると思うが、ちょっとでも加工が必要になってくると、かえって冗長な感じになってしまうので、データ構造によってはMongoDB->MongoDBでも、MongoDB->CSVででも、事前処理したほうがさくっと終わりそうだなという印象を受けた。


付録: データ取り込み

RubyでMongoDBに入れた。MongoDBは$始まりのキーは許してくれないので、hash keyを変換するいまいちなコード入り。



0 件のコメント:

コメントを投稿