• 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
    
     
  • 相关阅读:
    14. Longest Common Prefix
    7. Reverse Integer
    用例图是软件项目成本预估的好帮手
    设计模式之创建性模式
    代码的核心定义文件
    一个项目经理的经验总结
    设计模式之结构型模式
    互联网发展十几年,你错过了哪些创业机会
    产品经理必读:像怀胎一样怀产品,要厚着脸皮听批评
    陌陌估值1亿美元:一个用户10美元,贵吗?
  • 原文地址:https://www.cnblogs.com/xiaoblog/p/4123212.html
Copyright © 2020-2023  润新知