@thorikiriのてょりっき

@thorikiriがWebとかAndroidとかの技術ネタや本を読んだブログです

今更MongoDBをJavaからアクセスしてみたよ

昨日はコンソールから叩いてみましたが、今日はJavaからアクセスしてみようと思います。
Downloads · mongodb/mongo-java-driver · GitHub から、最新のjarをダウンロードしてビルドパスに追加します。

Mongoをホストとポートを指定して作って、そこからDBを取得します。
必要なDBCollectionを取ってきて、それに対して色々と操作します。

  • insert:ドキュメントの挿入
  • find:ドキュメントの検索
  • update:ドキュメントの更新
  • remove:ドキュメントの削除

基本的な使い方はコードの通りですね。

import java.util.Set;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.Mongo;


public class FirstSample {

    public static void main(String[] args) {
        try {
            // 接続とDB取得
            Mongo mongo = new Mongo("localhost", 27017);
            DB db = mongo.getDB("test");

            // コレクションの一覧
            Set<String> colls = db.getCollectionNames();
            for (String coll : colls) {
                System.out.println(coll);
            }

            // コレクションの取得
            DBCollection collection = db.getCollection("things");
            System.out.println(collection.count());
            for (DBObject obj :collection.find()) {
                System.out.println(obj);
            }

            // ドキュメントの挿入
            BasicDBObject doc1 = new BasicDBObject();
            doc1.put("name", "thorikiri");
            doc1.put("age", 32);
            collection.insert(doc1);

            BasicDBObject doc2 = new BasicDBObject();
            doc2.put("name", "thorikiri2");
            doc2.put("age", 30);
            collection.insert(doc2);

            System.out.println(collection.count());
            for (DBObject obj :collection.find()) {
                System.out.println(obj);
            }

            // ドキュメントの更新
            BasicDBObject query = new BasicDBObject();
            query.put("name", "thorikiri");
            doc1.put("age", 33);
            collection.update(query, doc1);

            System.out.println(collection.count());
            for (DBObject obj :collection.find()) {
                System.out.println(obj);
            }

            // ドキュメントの削除
            collection.remove(doc1);
            collection.remove(doc2);

            System.out.println(collection.count());
            for (DBObject obj :collection.find()) {
                System.out.println(obj);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


BasicDBObjectはちょっと使い方が面倒くさいです。何かいいライブラリがあるのでしょうか?
最近はAPTでゴニョゴニョする系が個人的には好きです。