Java 操作mongodb

package cn.test.db;



import java.io.File;

import java.io.IOException;

import java.net.UnknownHostException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Set;

import com.mongodb.BasicDBObject;

import com.mongodb.BasicDBObjectBuilder;

import com.mongodb.DB;

import com.mongodb.DBCollection;

import com.mongodb.DBCursor;

import com.mongodb.DBObject;

import com.mongodb.Mongo;

import com.mongodb.MongoException;

import com.mongodb.gridfs.GridFS;

import com.mongodb.gridfs.GridFSDBFile;

import com.mongodb.gridfs.GridFSInputFile;

import com.mongodb.util.JSON;



/**

 * 需引入jar包 :地址https://github.com/mongodb/mongo-java-driver/downloads

 * 根据服务器所安装版本下载对应即可>>>

 * 

 *查看版本方式:[root@vmu010226-node1 ~]# mongo version

 */



public class App {



    /**

     * 连接库 test

     * 

     * @return

     * @throws UnknownHostException

     * @throws MongoException

     */

    public static DB getDb() throws UnknownHostException, MongoException {

        // 实例化Mongo对象,连接27017端口

        Mongo mongo = new Mongo("10.1.207.110", 27017);

        // 连接名为test的数据库,假如数据库不存在的话,mongodb会自动建立

        DB db = mongo.getDB("test");

        return db;

    }



    /**

     * 获取所有的集合名

     * 

     * @throws MongoException

     * @throws UnknownHostException

     */

    public void getCollectionName() throws MongoException, UnknownHostException {

        Set<String> collections = getDb().getCollectionNames();

        for (String collectionName : collections) {

            System.out.println("collectionName=" + collectionName);

        }

    }



    /**

     * 与集合名为game的取得连接

     * 

     * @return

     * @throws UnknownHostException

     * @throws MongoException

     */

    public static DBCollection getCollection() throws UnknownHostException,

            MongoException {

        DBCollection collection = getDb().getCollection("game");

        return collection;

    }



    /**

     * insert 第一种方法,是使用BasicDBObjec

     * 

     * @throws MongoException

     * @throws UnknownHostException

     */

    public static void insertByBasicDBObject() throws MongoException,

            UnknownHostException {

        BasicDBObject document = new BasicDBObject();

        document.put("id", 1);

        document.put("name", "测试数据no1");

        document.put("content", "评价no1");

        document.put("score", 5000);

        BasicDBObject documentDetail = new BasicDBObject();

        documentDetail.put("records", "99");

        documentDetail.put("index", "vps_index1");

        documentDetail.put("active", "true");

        document.put("detail", documentDetail);

        getCollection().insert(document);

        /***

         * 输出结果 :{ "_id" : ObjectId("547536e291812694b70f5059"), "id" : 1,

         * "name" : "测试数据no1", "content" : "评价no1", "score" : 5000, "detail" : {

         * "records" : "99", "index" : "vps_index1", "active" : "true" } }

         */

    }



    /**

     * insert 第二种方法,是使用BasicDBObjectBuilder

     * 

     * @throws MongoException

     * @throws UnknownHostException

     */

    public static void insertByBasicDBObjectBuilder() throws MongoException,

            UnknownHostException {

        BasicDBObjectBuilder documentBuilder = BasicDBObjectBuilder.start()

                .add("id", 2).add("name", "测试数据no2").add("content", "评价no2")

                .add("score", 5000);

        BasicDBObjectBuilder documentBuilderDetail = BasicDBObjectBuilder

                .start().add("records", "100").add("index", "vps_index2").add(

                        "active", "true");

        documentBuilder.add("detail", documentBuilderDetail.get());

        getCollection().insert(documentBuilder.get());

        /***

         * 输出结果 :{ "_id" : ObjectId("547539009181903d3a37ddeb"), "id" : 2,

         * "name" : "测试数据no2", "content" : "评价no2", "score" : 5000, "detail" : {

         * "records" : "100", "index" : "vps_index2", "active" : "true" } }

         */

    }



    /**

     * insert 第三种方法,是使用Map

     * 

     * @throws MongoException

     * @throws UnknownHostException

     */

    @SuppressWarnings("unchecked")

    public static void insertByMap() throws MongoException,

            UnknownHostException {

        Map documentMap = new HashMap();

        documentMap.put("id", 3);

        documentMap.put("name", "测试数据no3");

        documentMap.put("content", "评价no3");

        documentMap.put("score", 5000);

        Map documentMapDetail = new HashMap();

        documentMapDetail.put("records", "99");

        documentMapDetail.put("index", "vps_index3");

        documentMapDetail.put("active", "true");

        documentMap.put("detail", documentMapDetail);

        getCollection().insert(new BasicDBObject(documentMap));

        /**

         * 输出结果:{ "_id" : ObjectId("547539ff9181629953cc678c"), "content" :

         * "评价no3", "id" : 3, "detail" : { "index" : "vps_index3", "active" :

         * "true", "records" : "99" }, "name" : "测试数据no3", "score" : 5000 }

         */

    }



    /**

     * insert 第四种方法,直接使用json格式

     * 

     * @throws MongoException

     * @throws UnknownHostException

     */

    public static void insertByJson() throws MongoException,

            UnknownHostException {

        String json = "{'database' : 'mkyongDB','table' : 'hosting',"

                + "'detail' : {'records' : 99, 'index' : 'vps_index1', 'active' : 'true'}}}";

        DBObject dbObject = (DBObject) JSON.parse(json);

        getCollection().insert(dbObject);

        /**

         * 输出结果:{ "_id" : ObjectId("54753abd91810ba1daa7ff0f"), "database" :

         * "mkyongDB", "table" : "hosting", "detail" : { "records" : 99, "index"

         * : "vps_index1", "active" : "true" } }

         */

    }



    /****

     * 

     * game集合里面现在的数据为 > db.game.find() { "_id" :

     * ObjectId("547443c4c9158f23e626927f"), "name" : "my hero", "content" :

     * "are you sure?", "score" : 20000 } { "_id" :

     * ObjectId("54752f5f9181f945548b2375"), "id" : 1001, "name" : "啦啦啦啦啦啦啦",

     * "content" : "hello world mongoDB in Java", "score" : 1 } { "_id" :

     * ObjectId("547530ac9181d6f709a151f0"), "id" : 1001, "name" : "啦啦啦啦啦啦啦",

     * "content" : "hello world mongoDB in Java", "score" : 1 } { "_id" :

     * ObjectId("547536e291812694b70f5059"), "id" : 1, "name" : "测试数据no1",

     * "content" : "评价no1", "score" : 5000, "detail" : { "records" : "99",

     * "index" : "vps_index1", "active" : "true" } } { "_id" :

     * ObjectId("547539009181903d3a37ddeb"), "id" : 2, "name" : "测试数据no2",

     * "content" : "评价no2", "score" : 5000, "detail" : { "records" : "100",

     * "index" : "vps_index2", "active" : "true" } } { "_id" :

     * ObjectId("547539ff9181629953cc678c"), "content" : "评价no3", "id" : 3,

     * "detail" : { "index" : "vps_index3", "active" : "true", "records" : "99"

     * }, "name" : "测试数据no3", "score" : 5000 } { "_id" :

     * ObjectId("54753abd91810ba1daa7ff0f"), "database" : "mkyongDB", "table" :

     * "hosting", "detail" : { "records" : 99, "index" : "vps_index1", "active"

     * : "true" } }

     * 

     */

    // 更新 .............



    /**

     * update

     * 

     * @param args

     * @throws UnknownHostException

     * @throws MongoException

     *              使用BasicDBObject对象,并为其赋值了新的值后,然后使用collection的update方法,即可更新该对象

     */

    public static void update_1() throws MongoException, UnknownHostException {

        // ** 将这条数据更新 { "_id" : ObjectId("547443c4c9158f23e626927f"), "name" :

        // "my hero", "content" : "are you sure?", "score" : 20000 }

        BasicDBObject newDocument = new BasicDBObject();

        newDocument.put("name", "my new hero");

        newDocument.put("content", "这是我的新英雄!");

        newDocument.put("score", 15400);

        getCollection().update(new BasicDBObject().append("name", "my hero"),

                newDocument);

        /**

         * 输出结果 :{ "_id" : ObjectId("547443c4c9158f23e626927f"), "name" :

         * "my new hero", "content" : "这是我的新英雄!", "score" : 15400 }

         */

    }



    /***

     * 

     * 还可以使用mongodb中的$inc修饰符号去对某个值进行更新,比如,要将name值为my new

     * hero的document的score的值得更新为16000(即15400+4600=16000)

     * 

     * @param args

     * @about "$inc"更新修改器 可作为计数器

     */

    public static void update_inc() throws MongoException, UnknownHostException {

        /**

         * 初始{ "_id" : ObjectId("547443c4c9158f23e626927f"), "name" :

         * "my new hero", "content" : "这是我的新英雄!", "score" : 15400 }

         */

        BasicDBObject newDocument = new BasicDBObject().append("$inc",

                new BasicDBObject().append("score", 4600));

        getCollection().update(

                new BasicDBObject().append("name", "my new hero"), newDocument);

        /**

         * 输出结果 :{ "_id" : ObjectId("547443c4c9158f23e626927f"), "name" :

         * "my new hero", "content" : "这是我的新英雄!", "score" : 20000 }

         */

    }



    /**

     * "$set" 可添加字段内容

     * 

     * @throws MongoException

     * @throws UnknownHostException

     */

    public static void update_set() throws MongoException, UnknownHostException {

        BasicDBObject newDocument = new BasicDBObject().append("$set",

                new BasicDBObject().append("useset", "使用$set"));

        getCollection().update(

                new BasicDBObject().append("name", "my new hero"), newDocument);

        /**

         * 输出结果 :{ "_id" : ObjectId("547443c4c9158f23e626927f"), "name" :

         * "my new hero", "content" : "这是我的新英雄!", "score" : 20000, "useset" :

         * "使用$set" }

         */

    }



    /**

     * "$unset" 可删除字段内容

     * 

     * @throws MongoException

     * @throws UnknownHostException

     */

    public static void update_unset() throws MongoException,

            UnknownHostException {

        BasicDBObject newDocument = new BasicDBObject().append("$unset",

                new BasicDBObject().append("useset", "使用$set"));

        getCollection().update(

                new BasicDBObject().append("name", "my new hero"), newDocument);

        /**

         * 输出结果 :{ "_id" : ObjectId("547443c4c9158f23e626927f"), "name" :

         * "my new hero", "content" : "这是我的新英雄!", "score" : 20000 }

         */

    }



    /**

     * 批量更新

     * 

     * @throws MongoException

     * @throws UnknownHostException

     */

    public static void update_multi() throws MongoException,

            UnknownHostException {

        // 将id为1001的数据的score更新为999999

        /**

         * 初始值:{ "_id" : ObjectId("54752f5f9181f945548b2375"), "id" : 1001,

         * "name" : "啦啦啦啦啦啦啦", "content" : "hello world mongoDB in Java",

         * "score" : 1 } { "_id" : ObjectId("547530ac9181d6f709a151f0"), "id" :

         * 1001, "name" : "啦啦啦啦啦啦啦", "content" : "hello world mongoDB in Java",

         * "score" : 1 }

         */

        BasicDBObject updateQuery = new BasicDBObject().append("$set",

                new BasicDBObject().append("score", 999999));

        getCollection().update(new BasicDBObject().append("id", 1001),

                updateQuery, false, true);

        /**

         * 输出结果 { "_id" : ObjectId("54752f5f9181f945548b2375"), "id" : 1001,

         * "name" : "啦啦啦啦啦啦啦", "content" : "hello world mongoDB in Java",

         * "score" : 999999 } { "_id" : ObjectId("547530ac9181d6f709a151f0"),

         * "id" : 1001, "name" : "啦啦啦啦啦啦啦", "content" :

         * "hello world mongoDB in Java", "score" : 999999 }

         */

    }



    // 查询



    /**

     * 查询Document

     * 

     * 先用下面的代码往数据库中插入1-10数字:

     */



    public static void init() throws MongoException, UnknownHostException {



        for (int i = 1; i <= 10; i++) {

            getCollection().insert(new BasicDBObject().append("number", i));

        }

        /**

         * 结果为: { "_id" : ObjectId("547562c991818dbe4d036486"), "number" : 1 } {

         * "_id" : ObjectId("547562c991818dbe4d036487"), "number" : 2 } { "_id"

         * : ObjectId("547562c991818dbe4d036488"), "number" : 3 } { "_id" :

         * ObjectId("547562c991818dbe4d036489"), "number" : 4 } { "_id" :

         * ObjectId("547562c991818dbe4d03648a"), "number" : 5 } { "_id" :

         * ObjectId("547562c991818dbe4d03648b"), "number" : 6 } { "_id" :

         * ObjectId("547562c991818dbe4d03648c"), "number" : 7 } { "_id" :

         * ObjectId("547562c991818dbe4d03648d"), "number" : 8 } { "_id" :

         * ObjectId("547562c991818dbe4d03648e"), "number" : 9 } { "_id" :

         * ObjectId("547562c991818dbe4d03648f"), "number" : 10 }

         */

    }



    /**

     * 查询第一个数据

     * 

     * @throws MongoException

     * @throws UnknownHostException

     */

    public static void findOne() throws MongoException, UnknownHostException {

        DBObject dbObject = getCollection().findOne(); // 等同于mongo 执行

        // db.game.findOne()

        System.out.println(dbObject);

        /**

         * 输出结果 :{ "_id" : ObjectId("547562c991818dbe4d036486"), "number" : 1 }

         */



    }



    /**

     * 获得document的集合

     * 

     * @param

     * @throws MongoException

     * @throws UnknownHostException

     */



    public static void getDocCollections() throws UnknownHostException,

            MongoException {

        DBCursor cursor = getCollection().find();

        while (cursor.hasNext()) {

            System.out.println(cursor.next());

        }

        /***

         * 输出结果为:{ "_id" : { "$oid" : "547562c991818dbe4d036486"} , "number" :

         * 1} { "_id" : { "$oid" : "547562c991818dbe4d036487"} , "number" : 2} {

         * "_id" : { "$oid" : "547562c991818dbe4d036488"} , "number" : 3} {

         * "_id" : { "$oid" : "547562c991818dbe4d036489"} , "number" : 4} {

         * "_id" : { "$oid" : "547562c991818dbe4d03648a"} , "number" : 5} {

         * "_id" : { "$oid" : "547562c991818dbe4d03648b"} , "number" : 6} {

         * "_id" : { "$oid" : "547562c991818dbe4d03648c"} , "number" : 7} {

         * "_id" : { "$oid" : "547562c991818dbe4d03648d"} , "number" : 8} {

         * "_id" : { "$oid" : "547562c991818dbe4d03648e"} , "number" : 9} {

         * "_id" : { "$oid" : "547562c991818dbe4d03648f"} , "number" : 10}

         */

    }



    /**

     * 获得document集合的总数

     * 

     * @throws UnknownHostException

     * @throws MongoException

     */

    public static void getDocCount() throws UnknownHostException,

            MongoException {

        DBCursor cursor = getCollection().find();

        System.out.println(cursor.count());

    }



    /**

     * 根据条件取document

     * 

     * @throws UnknownHostException

     * @throws MongoException

     */

    @SuppressWarnings("unchecked")

    public static void getDocCollectionsByCondition()

            throws UnknownHostException, MongoException {

        BasicDBObject query = new BasicDBObject();

        query.put("number", 5); // 取number 为5的document

        DBCursor cursor = getCollection().find(query);

        while (cursor.hasNext()) {

            System.out.println(cursor.next());

        }// 输出结果:{ "_id" : { "$oid" : "547562c991818dbe4d03648a"} , "number" :

        // 5}

        /**

         * 使用 "$in"

         */

        BasicDBObject query_in = new BasicDBObject();

        List list_in = new ArrayList();

        list_in.add(9);

        list_in.add(10);

        query_in.put("number", new BasicDBObject("$in", list_in)); // 取number等于9和10的数据

        DBCursor cursor_in = getCollection().find(query_in);

        while (cursor_in.hasNext()) {

            System.out.println(cursor_in.next());// 输出结果:{ "_id" : { "$oid" :

            // "547562c991818dbe4d03648e"}

            // , "number" : 9}

            // { "_id" : { "$oid" : "547562c991818dbe4d03648f"} , "number" : 10}

        }

        /*

         * 使用>,<等比较符号 "$lt" "$lte" "$gt" "$gte" "$ne" //小于 小于等于 大于 大于等于 不等于

         */

        BasicDBObject query_gt = new BasicDBObject();

        query_gt.put("number", new BasicDBObject("$gt", 5).append("$lte", 8)); // 大于5小于8

        DBCursor cursor_gt = getCollection().find(query_gt);

        while (cursor_gt.hasNext()) {

            System.out.println(cursor_gt.next());// 输出结果:{ "_id" : { "$oid" :

            // "547562c991818dbe4d03648b"}

            // , "number" : 6}

            // { "_id" : { "$oid" : "547562c991818dbe4d03648c"} , "number" : 7}

            // { "_id" : { "$oid" : "547562c991818dbe4d03648d"} , "number" : 8}

        }



    }



    /**

     * 删除操作

     */

    @SuppressWarnings("unchecked")

    public static void removeFirstOne() throws MongoException,

            UnknownHostException {

        // 删除第一个document

        DBObject dbObject = getCollection().findOne();

        getCollection().remove(dbObject);



        // 删除指定的document

        BasicDBObject document = new BasicDBObject();

        document.put("number", 2);

        getCollection().remove(document);



        // 使用$in 删除多个document

        BasicDBObject query_in = new BasicDBObject();

        List list_in = new ArrayList();

        list_in.add(9);

        list_in.add(10);

        query_in.put("number", new BasicDBObject("$in", list_in)); // 先取number等于9和10的数据

        getCollection().remove(query_in);



        // 删除所有的document

        DBCursor cursor = getCollection().find();

        while (cursor.hasNext()) {

            getCollection().remove(cursor.next());

        }

    }



    /**

     * 保存图片

     * 

     * @throws IOException

     */

    public static void savePhoto() throws IOException {

        String newFileName = "test-mongo-image";

        File imageFile = new File("C:\\Users\\xiao\\Desktop\\pda\\logo.gif");

        GridFS gfsPhoto = new GridFS(getDb(), "photo");

        GridFSInputFile gfsFile = gfsPhoto.createFile(imageFile);

        gfsFile.setFilename(newFileName);

        gfsFile.save();

    }



    /**

     * 读取图片

     * 

     * @throws UnknownHostException

     * @throws MongoException

     */

    public static void readPhoto() throws UnknownHostException, MongoException {

        String newFileName = "test-mongo-image";

        GridFS gfsPhoto = new GridFS(getDb(), "photo");

        GridFSDBFile imageForOutput = gfsPhoto.findOne(newFileName);

        System.out.println(imageForOutput);

        /**

         * 

         * 

         *输出结果:{ "_id" : { "$oid" : "54756e479181e6adf838e1f0"} , "chunkSize" :

         * 262144 , "length" : 5238 , "md5" : "a47baf8201db57a790c91c88329aaa69"

         * , "filename" : "test-mongo-image" , "contentType" : null ,

         * "uploadDate" : { "$date" : "2014-11-26T06:08:07.047Z"} , "aliases" :

         * null }

         * 

         * 

         */

    }



    /**

     * 读取所有的图片

     * 

     * @throws UnknownHostException

     * @throws MongoException

     */

    public static void readAllPhoto() throws UnknownHostException,

            MongoException {

        GridFS gfsPhoto = new GridFS(getDb(), "photo");

        DBCursor cursor = gfsPhoto.getFileList();

        while (cursor.hasNext()) {

            System.out.println(cursor.next());

        }

    }



    /**

     * 从数据库读取后写入到磁盘上

     * 

     * @throws IOException

     */

    public static void readToWrite() throws IOException {

        String newFileName = "test-mongo-image";

        GridFS gfsPhoto = new GridFS(getDb(), "photo");

        GridFSDBFile imageForOutput = gfsPhoto.findOne(newFileName);

        imageForOutput.writeTo("c:\\JavaWebHostingNew.png");

    }



    /**

     * 删除图片

     * 

     * @throws UnknownHostException

     * @throws MongoException

     */

    public static void removePhotos() throws UnknownHostException,

            MongoException {

        String newFileName = "test-mongo-image";

        GridFS gfsPhoto = new GridFS(getDb(), "photo");

        gfsPhoto.remove(gfsPhoto.findOne(newFileName));

    }



    public static void main(String[] args) throws Exception {

        /**

         * 插入 4种方式

         */

        // insertByBasicDBObject();

        // insertByBasicDBObjectBuilder();

        // insertByMap();

        // insertByJson();

        /**

         * 更新

         * */

        // update_1();

        // update_inc();

        // update_set();

        // update_unset();

        // update_multi();

        /**

         * 初始化需要查询的数据

         */

        // init();

        // findOne();

        // getDocCollections();

        // getDocCount();

        // getDocCollectionsByCondition();

        // removeFirstOne();



        /**

         * 图片操作

         */

        // savePhoto();

        // readPhoto();

        // readAllPhoto();

        // readToWrite();

        // removePhotos();

        System.out.println("done....");



    }

}



源码地址:http://download.csdn.net/detail/u010497606/8200295



 

 

你可能感兴趣的:(mongodb)