Java ライブラリからデータの操作をしてみる。
(現在時点の最新バージョンは mongo-2.7.2.jar だった)
com.mongodb.Mongo#getDB() でDB名を指定して com.mongodb.DB オブジェクトを取得する。
この時点ではホスト名、ポート番号、DB 名が誤っていてもエラーは発生しない。
DB オブジェクトを使用したデータの操作の際にエラーが発生する。
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 を参考に。