2012年4月10日火曜日

rmongodb 試してみた。

R から MongoDB へアクセスする為のモジュール rmongodb を試してみた。

試した環境は以下。

  • Mac OS X 10.7.3 lion
  • MongoDB 2.0.4
  • R 2.15.0
特に問題無くデータの登録・取得まで実施できてしまった。
至れり尽くせりでかなり楽。

以下、作業は RStudio 上で行う。

1. CRAN から rmongodb をインストール

> install.packages("rmongodb")
Installing package(s) into ‘/Library/Frameworks/R.framework/Versions/2.15/Resources/library’
(as ‘lib’ is unspecified)
 URL 'http://cran.md.tsukuba.ac.jp/bin/macosx/leopard/contrib/2.15/rmongodb_1.0.2.tgz' を試しています 
Content type 'application/x-gzip' length 736282 bytes (719 Kb)
 開かれた URL 
==================================================
downloaded 719 Kb


The downloaded binary packages are in
 /var/folders/rj/2lv6210x7_zd0lp8d7z01tpw0000gn/T//Rtmp7WXBGF/downloaded_packages


2. データの登録・取得
> library(rmongodb)
rmongodb package (mongo-r-driver) loaded
Use 'help("mongo")' to get started.

// 接続の作成
// ※デフォルトの接続先は '127.0.0.1'
> mongo <- mongo.create()

// データの登録(insert)
> mongo.insert(mongo, 'sample.testcol', list(name='you', age=33))
[1] TRUE
> mongo.insert(mongo, 'sample.testcol', list(name='kei', age=31))
[1] TRUE

// データを1件取得(findOne)
> mongo.find.one(mongo, 'sample.testcol', list(name='you'))
 _id : 7   4f830014eeb09670f1e8eab8
 name : 2   you
 age : 1   33.000000
> res <- mongo.find.one(mongo, 'sample.testcol', list(age=31))
> res
 _id : 7   4f8300d7eeb09670f1e8eab9
 name : 2   kei
 age : 1   31.000000
> mongo.bson.value(res, 'name')
[1] "kei"
> mongo.bson.value(res, 'age')
[1] 31

// データ一覧の取得(find)
> cur <- mongo.find(mongo, 'sample.testcol')
> while(mongo.cursor.next(cur))
+   print(mongo.cursor.value(cur))
 _id : 7   4f830014eeb09670f1e8eab8
 name : 2   you
 age : 1   33.000000
 _id : 7   4f8300d7eeb09670f1e8eab9
 name : 2   kei
 age : 1   31.000000
> mongo.cursor.destroy(cur) // カーソルの開放
[1] FALSE


実際に使用する際にはデータ一覧取得の後に、 data.frame への格納処理が必要になるはずなのでその辺も楽に出来るようになると良いなと思った。

0 件のコメント:

コメントを投稿