ザネリは列車を見送った

ブログという名の備忘録

ドキュメント指向データベース MongoDB を少しだけ触ってみる(2)

Java ライブラリからデータの操作をしてみる。

Java ドライバのダウンロード

MongoDB - Java Language Centerの「Download the Java Driver」からダウンロードする。
(現在時点の最新バージョンは mongo-2.7.2.jar だった)

接続

ホスト名、ポート番号を指定して com.mongodb.Mongo を作成し(指定しない場合はローカルホストの27017が使用される)、
com.mongodb.Mongo#getDB() でDB名を指定して com.mongodb.DB オブジェクトを取得する。
この時点ではホスト名、ポート番号、DB 名が誤っていてもエラーは発生しない。
DB オブジェクトを使用したデータの操作の際にエラーが発生する。

検索

com.mongodb.DB#getCollection() でコレクション名を指定して com.mongodb.DBCollection オブジェクトを取得し、
com.mongodb.DBCollection#find() で com.mongodb.DBCursor を取得する。
DBCursor をループで回し、各レコードを取得する。
最初の一件を取得する場合は com.mongodb.DBCollection#findOne()、
検索条件を指定する場合は com.mongodb.DBCollection#find() の引数に com.mongodb.DBObject を指定する。
(が、この使い勝手はあまりよくないように思う)

挿入

com.mongodb.DBCollection#insert() で com.mongodb.DBObject を指定して挿入する。
(com.mongodb.DBCollection#save() との違いをちゃんと把握できていないので要調査)

更新

com.mongodb.DBCollection#update() で更新対象条件と更新する値を指定して更新する。
が、条件を指定した検索と同様、検索条件となるキーやドキュメントの構造があらかじめ分かっていないと
使いづらいような気がする。
例えば検索キー用のオブジェクトを決めておくとか、何らかのルールがあったほうがいいのかもしれない。

削除

com.mongodb.DBCollection#remove() でレコードを削除、 com.mongodb.DBCollection#drop() でコレクションを削除する。

検索、挿入をまとめるとこんな感じ。
全ての型が DBObject の value として Object で返ってくるので、型による扱いを考慮する必要があるか。

独自オブジェクトを挿入する

com.mongodb.DBObject を実装したクラスを作成すれば、その他の型と同様
com.mongodb.DBCollection#insert() で挿入することができる。
以下のように com.mongodb.BasicDBObject を継承した場合、getter/setter で値を取得、設定できるが、
フィールドに値を持たせるのではなく BasicDBObject の getXXX/put を使用する必要がある。

より詳細な情報はMongoDB - Java Tutorialを参考に。