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集群(四)—— 分片

posted @ 2014-07-24 12:12  菩提树下的杨过  阅读(41687)  评论(2编辑  收藏  举报