zoukankan      html  css  js  c++  java
  • mongodb-java-driver基本用法

    1、先下载mongodb-java-driver 目前最新版本是2.9.3

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

      1 package com.cnblogs.yjmyzz.cache.test;
      2 
      3 import com.google.gson.Gson;
      4 import com.mongodb.BasicDBObject;
      5 import com.mongodb.DB;
      6 import com.mongodb.DBCollection;
      7 import com.mongodb.DBCursor;
      8 import com.mongodb.DBObject;
      9 import com.mongodb.Mongo;
     10 import com.mongodb.util.JSON;
     11 
     12 import java.net.UnknownHostException;
     13 import java.util.Calendar;
     14 import java.util.Date;
     15 import java.util.HashMap;
     16 import java.util.HashSet;
     17 import java.util.Map;
     18 import java.util.Set;
     19 
     20 import org.junit.Test;
     21 
     22 public class TestMongoDriver {
     23 
     24     @Test
     25     public void testCRUD() throws UnknownHostException {
     26         // 连接到mongodb
     27         Mongo mongo = new Mongo("localhost", 27017);
     28 
     29         // 打开数据库test
     30         DB db = mongo.getDB("test");
     31 
     32         // 遍历所有集合的名字
     33         Set<String> colls = db.getCollectionNames();
     34         for (String s : colls) {
     35             System.out.println(s);
     36             // 先删除所有Collection(类似于关系数据库中的"表")
     37             if (!s.equals("system.indexes")) {
     38                 db.getCollection(s).drop();
     39             }
     40         }
     41 
     42         // 取得集合emp(若:emp不存在,mongodb将自动创建该集合)
     43         DBCollection coll = db.getCollection("emp");
     44 
     45         // delete all
     46         DBCursor dbCursor = coll.find();
     47         for (DBObject dbObject : dbCursor) {
     48             coll.remove(dbObject);
     49         }
     50 
     51         // create
     52         BasicDBObject doc = new BasicDBObject("name", "杨俊明").append("sex", "男")
     53                 .append("address",
     54                         new BasicDBObject("postcode", "201202").append(
     55                                 "street", "田林路888号").append("city", "上海"));
     56         coll.insert(doc);
     57 
     58         // retrieve
     59         BasicDBObject docFind = new BasicDBObject("name", "杨俊明");
     60         DBObject findResult = coll.findOne(docFind);
     61         System.out.println(findResult);
     62 
     63         // update
     64         doc.put("sex", "MALE");// 把sex属性从"男",改成"MALE"
     65         coll.update(docFind, doc);
     66         findResult = coll.findOne(docFind);
     67         System.out.println(findResult);
     68 
     69         coll.dropIndexes();// 先删除所有索引
     70         // create index
     71         coll.createIndex(new BasicDBObject("name", 1)); // 1代表升序
     72 
     73         // 复杂对象
     74         UserData userData = new UserData("jimmy", "123456");
     75         Set<String> pets = new HashSet<String>();
     76         pets.add("cat");
     77         pets.add("dog");
     78         Map<String, String> favoriteMovies = new HashMap<String, String>();
     79         favoriteMovies.put("dragons", "Dragons II");
     80         favoriteMovies.put("avator", "Avator I");
     81         userData.setFavoriteMovies(favoriteMovies);
     82         userData.setPets(pets);
     83         userData.setBirthday(getDate(1990, 5, 1));
     84         BasicDBObject objUser = new BasicDBObject("key", "jimmy").append(
     85                 "value", toDBObject(userData));
     86         coll.insert(objUser);
     87         System.out.println(coll.findOne(objUser));
     88     }
     89 
     90     /**
     91      * 将普通Object对象转换成mongodb的DBObject对象
     92      * 
     93      * @param obj
     94      * @return
     95      */
     96     private DBObject toDBObject(Object obj) {
     97         Gson gson = new Gson();
     98         String json = gson.toJson(obj);
     99         return (DBObject) JSON.parse(json);
    100     }
    101 
    102     /**
    103      * 获取指定日期
    104      * 
    105      * @param year
    106      * @param month
    107      * @param day
    108      * @return
    109      */
    110     private Date getDate(int year, int month, int day) {
    111         Calendar calendar = Calendar.getInstance();
    112         calendar.clear();
    113         calendar.set(year, month - 1, day);
    114         return calendar.getTime();
    115 
    116     }
    117 
    118 }

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

    package com.cnblogs.yjmyzz.cache.test;
    
    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"}}

    延伸阅读:
    mondodb-java-driver 官方在线文档

    8天学通mongodb系列

    MongoDB基本用法

    搭建高可用的MongoDB集群(上):MongoDB的配置与副本集

    搭建高可用mongodb集群(二)—— 副本集

    搭建高可用mongodb集群(三)—— 深入副本集内部机制
    搭建高可用mongodb集群(四)—— 分片

  • 相关阅读:
    java语言基础001
    Linux 使用硬盘
    Linux 系统运行命令 > 查看系统信息
    Linux rm 命令
    Linux 操作系统目录结构
    JavaScript || 事件基础
    My SQL随记 003 数据表基础操作语法
    My SQL随记 002 登陆
    My SQL随记 001 常用名词/结构化语言
    linux命令学习
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/3865175.html
Copyright © 2011-2022 走看看