• mongodb-java-driver基本用法


    1、先下载mongodb-java-driver ,可以百度搜索maven仓库的mongoDB的java语言的driver。

    2、下面是基本的CRUD示例代码:

    import com.google.gson.Gson;
    import com.mongodb.BasicDBObject;
    import com.mongodb.DB;
    import com.mongodb.DBCollection;
    import com.mongodb.DBCursor;
    import com.mongodb.DBObject;
    import com.mongodb.Mongo;
    import com.mongodb.util.JSON;
    
    import java.net.UnknownHostException;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Map;
    import java.util.Set;
    
    import org.junit.Test;
    
    public class TestMongoDriver {
    
        @Test
        public void testCRUD() throws UnknownHostException {
            // 连接到mongodb
            Mongo mongo = new Mongo("localhost", 27017);
    
            // 打开数据库test
            DB db = mongo.getDB("test");
    
            // 遍历所有集合的名字
            Set<String> colls = db.getCollectionNames();
            for (String s : colls) {
                System.out.println(s);
                // 先删除所有Collection(类似于关系数据库中的"表")
                if (!s.equals("system.indexes")) {
                    db.getCollection(s).drop();
                }
            }
    
            // 取得集合emp(若:emp不存在,mongodb将自动创建该集合)
            DBCollection coll = db.getCollection("emp");
    
            // delete all
            DBCursor dbCursor = coll.find();
            for (DBObject dbObject : dbCursor) {
                coll.remove(dbObject);
            }
    
            // create
            BasicDBObject doc = new BasicDBObject("name", "杨俊明").append("sex", "男")
                    .append("address",
                            new BasicDBObject("postcode", "201202").append(
                                    "street", "田林路888号").append("city", "上海"));
            coll.insert(doc);
    
            // retrieve
            BasicDBObject docFind = new BasicDBObject("name", "杨俊明");
            DBObject findResult = coll.findOne(docFind);
            System.out.println(findResult);
    
            // update
            doc.put("sex", "MALE");// 把sex属性从"男",改成"MALE"
            coll.update(docFind, doc);
            findResult = coll.findOne(docFind);
            System.out.println(findResult);
    
            coll.dropIndexes();// 先删除所有索引
            // create index
            coll.createIndex(new BasicDBObject("name", 1)); // 1代表升序
    
            // 复杂对象
            UserData userData = new UserData("jimmy", "123456");
            Set<String> pets = new HashSet<String>();
            pets.add("cat");
            pets.add("dog");
            Map<String, String> favoriteMovies = new HashMap<String, String>();
            favoriteMovies.put("dragons", "Dragons II");
            favoriteMovies.put("avator", "Avator I");
            userData.setFavoriteMovies(favoriteMovies);
            userData.setPets(pets);
            userData.setBirthday(getDate(1990, 5, 1));
            BasicDBObject objUser = new BasicDBObject("key", "jimmy").append(
                    "value", toDBObject(userData));
            coll.insert(objUser);
            System.out.println(coll.findOne(objUser));
        }
    
        /**
         * 将普通Object对象转换成mongodb的DBObject对象
         * 
         * @param obj
         * @return
         */
        private DBObject toDBObject(Object obj) {
            Gson gson = new Gson();
            String json = gson.toJson(obj);
            return (DBObject) JSON.parse(json);
        }
    
        /**
         * 获取指定日期
         * 
         * @param year
         * @param month
         * @param day
         * @return
         */
        private Date getDate(int year, int month, int day) {
            Calendar calendar = Calendar.getInstance();
            calendar.clear();
            calendar.set(year, month - 1, day);
            return calendar.getTime();
    
        }
    
    }

      其中,为了演示复杂对象的持久化,类UserData定义如下: 

    import java.io.Serializable;
    import java.util.Date;
    import java.util.Map;
    import java.util.Set;
    
    public class UserData implements Serializable {
    
        private static final long serialVersionUID = -4770493237851400594L;
        private String userName;
        private String password;
        private Set<String> pets;
        private Map<String, String> favoriteMovies;
        private Date birthday;
    
        public UserData() {
        }
        public UserData(String userName, String passWord) {
            this.userName = userName;
            this.password = passWord;
        }
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public Set<String> getPets() {
            return pets;
        }
        public void setPets(Set<String> pets) {
            this.pets = pets;
        }
        public Map<String, String> getFavoriteMovies() {
            return favoriteMovies;
        }
        public void setFavoriteMovies(Map<String, String> favoriteMovies) {
            this.favoriteMovies = favoriteMovies;
        }
        public Date getBirthday() {
            return birthday;
        }
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
    }

      运行效果如下:

    emp
    system.indexes
    { "_id" : { "$oid" : "53d34795744ec171e7f6980a"} , "name" : "杨俊明" , "sex" : "" , "address" : { "postcode" : "201202" , "street" : "田林路888号" , "city" : "上海"}}
    { "_id" : { "$oid" : "53d34795744ec171e7f6980a"} , "name" : "杨俊明" , "sex" : "MALE" , "address" : { "postcode" : "201202" , "street" : "田林路888号" , "city" : "上海"}}
    { "_id" : { "$oid" : "53d34796744ec171e7f6980b"} , "key" : "jimmy" , "value" : { "userName" : "jimmy" , "password" : "123456" , "pets" : [ "cat" , "dog"] , "favoriteMovies" : { "dragons" : "Dragons II" , "avator" : "Avator I"} , "birthday" : "May 1, 1990 12:00:00 AM"}}
  • 相关阅读:
    OpenStack 企业私有云的若干需求(5):主流硬件支持、云快速交付 和 SLA 保证
    OpenStack 企业私有云的若干需求(4):混合云支持 (Hybrid Cloud Support)
    超千个节点OpenStack私有云案例(1):CERN 5000+ 计算节点私有云
    OpenStack 企业私有云的若干需求(3):多租户和租户间隔离(multi-tenancy and isolation)
    理解 Linux 网络栈(3):QEMU/KVM + VxLAN 环境下的 Segmentation Offloading 技术(发送端)
    理解 Linux 网络栈(2):非虚拟化Linux 环境中的 Segmentation Offloading 技术
    理解 Linux 网络栈(1):Linux 网络协议栈简单总结
    矩阵连乘最优结合 动态规划求解
    不用中间变量交换两个数 swap(a,b);
    java中String、StringBuffer、StringBuilder的区别
  • 原文地址:https://www.cnblogs.com/jing99/p/7446318.html
Copyright © 2020-2023  润新知