Java操作MongoDB

Mongodb 12年前發布 | 2K 次閱讀 PHP庫

          java驅動程序是Mongodb中的驅動程序之一,也是比較成熟的Mongodb驅動程序之一,下面介紹了使用java連接、操作Mongodb。

          一、安裝java驅動程序

                 Mongodb的java驅動程序是一個jar包,可以在:https://github.com/mongodb/mongo-java-driver/downloads 下載,下載的jar導入到eclipse的項目中即可。

          二、java操作Mongodb

                 java操作Mongodb常用的幾個類:

                Mongo:連接服務器,執行一些數據庫操作的選項,如新建立一個數據庫等

                DB:對應一個數據庫,可以用來建立集合等操作

                DBCollection:對應一個集合(類似表),可能是我們用得最多的,可以添加刪除記錄等

                DBObject接口和BasicDBObject對象:表示一個具體的記錄,BasicDBObject實現了DBObject,是key-value的數據結構,用起來和HashMap是基本一致的。

                DBCursor:用來遍歷取得的數據,實現了Iterable和Iterator

private static void mongodbOperating(){
        try {
            //有多種構造方法,選擇一種(IP、port)
            Mongo m = new Mongo( "192.168.21.111" , 27017 );
            //選擇數據庫,如果沒有這個數據庫的話,會自動建立
            DB  db = m.getDB( "mydb" );

            //建立一個集合,和數據庫一樣,如果沒有,會自動建立
            DBCollection collection = db.getCollection("myCollectionTest");

            BasicDBObject doc = new BasicDBObject();
            doc.put("name", "MongoDB");
            doc.put("type", "database");
            doc.put("count", 1);

            BasicDBObject info = new BasicDBObject();
            info.put("x", 203);
            info.put("y", 102);
            doc.put("info", info);

            //插入一條數據,數據如下
            // {
            //     "name" : "MongoDB",
            //     "type" : "database",
            //     "count" : 1,
            //     "info" : {
            //                 x : 203,
            //                 y : 102
            //               }
            //  }
            // 可以循環插入多條數據
            collection.insert(doc);
            //查找第一條數據,顯示如下,_id是系統自動幫加上的,全局唯一
            //{ "_id" : "49902cde5162504500b45c2c" , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}
            DBObject myDoc = collection.findOne();
            System.out.println(myDoc);

            //插入多條數據
            for (int i=0; i < 100; i++) {
                collection.insert(new BasicDBObject().append("i", i));
            }


            //獲取文檔條數
            System.out.println(collection.getCount());

            //使用Cursor 獲取所有文檔
            DBCursor cursor = collection.find();
            try {
                while(cursor.hasNext()) {
                    System.out.println(cursor.next());
                }
            } finally {
                cursor.close();
            }

            //查找操作,獲取單條記錄
            //{ "_id" : "49903677516250c1008d624e" , "i" : 71 }
            BasicDBObject query = new BasicDBObject();
            query.put("i", 71);
            cursor = collection.find(query);
            try {
                while(cursor.hasNext()) {
                    System.out.println(cursor.next());
                }
            } finally {
                cursor.close();
            }

            //查找 i>50的項
            query = new BasicDBObject();
            query.put("i", new BasicDBObject("$gt", 50));  // e.g. find all where i > 50
            cursor = collection.find(query);
            try {
                while(cursor.hasNext()) {
                    System.out.println(cursor.next());
                }
            } finally {
                cursor.close();
            }


            //查找 20<i<=30
            query = new BasicDBObject();
            query.put("i", new BasicDBObject("$gt", 20).append("$lte", 30));  // i.e.   20 < i <= 30
            cursor = collection.find(query);
            try {
                while(cursor.hasNext()) {
                    System.out.println(cursor.next());
                }
            } finally {
                cursor.close();
            }

            //修改 i=71的一項
            query = new BasicDBObject();
            query.put("i", 71);
            BasicDBObject update = new BasicDBObject();
            update.put("i", 710);
            DBObject dbobj = collection.findAndModify(query, update);
            System.out.println(dbobj);

            //修改 i=72的一項
            query = new BasicDBObject();
            query.put("i", 72);
            update = new BasicDBObject();
            update.put("i", 720);
            WriteResult result = collection.update(query, update);
            System.out.println(result);

            //刪除i=61的項
            query = new BasicDBObject();
            query.put("i", 61);
            collection.findAndRemove(query);
            //刪除i=62的項
            BasicDBObject remove = new BasicDBObject();
            remove.put("i", 62);
            collection.remove(remove);

            //創建索引 1為升序、-1為降序
            collection.createIndex(new BasicDBObject("i", 1));  // create index on "i", ascending

            //獲取索引列表
            List<DBObject> list = collection.getIndexInfo();
            for (DBObject o : list) {
                System.out.println(o);
            }

            //獲取數據庫列表
            for (String s : m.getDatabaseNames()) {
                System.out.println(s);
            }
            //獲取集合列表
            Set<String> colls = db.getCollectionNames();
            for (String s : colls) {
                System.out.println(s);
            }

            //刪除數據庫
            //m.dropDatabase("my_new_db");


        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

 本文由用戶 Mongodb 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!