java 操作mongoDB(DBobject,非spring data)
阿新 • • 發佈:2018-12-24
上篇部落格介紹了Java操作MongoDB進行對檔案的處理。現在來介紹一下對文件的處理。和對檔案的處理一樣,也是通過java驅動中提供的幾個類相互作用完成的。這幾個類分別是:
DBCollection類:指定資料庫中指定集合的例項,提供了增刪改查等一系列操作。在關係型資料庫中,對資料的增刪改查操作是建立在表的基礎上的,在mongodb中是建立在集合的基礎上進行的。
DBObject介面:DBObject是鍵值的對映,因此,可以將DBObject的實現類作為查詢的返回結果,也可以作為查詢條件
DBCursor:遊標,返回結果的集合。
下面是部分例項:
- Mongo mongo = new Mongo();
- DB db = mongo.getDB("myMongoDB");
- DBCollection course = db.getCollection("course");//對myMongoDB資料庫中course集合進行操作
- //新增操作
- //下面分別是建立文件的幾種方式:1. .append() 2. .put() 3. 通過map 4. 將json轉換成DBObject物件
-
DBObject english = new BasicDBObject().append("name","english").append("score"
- course.insert(english);
- DBObject math = new BasicDBObject();
- math.put("id", 2);
- math.put("name", "math");
- math.put("score", 10);
- course.insert(math);
- Map<String,Object> map = new HashMap<String,Object>();
- map.put("name","physics" );
-
map.put("score",
- map.put("id", 3);
- DBObject physics= new BasicDBObject(map);
- course.insert(physics);
- String json ="{'name':'chemistry','score':10,'id':4}";
- DBObject chemistry =(DBObject)JSON.parse(json);
- course.insert(chemistry);
- List<DBObject> courseList = new ArrayList<DBObject>();
- DBObject chinese = new BasicDBObject().append("name","chinese").append("score", 10).append("id", 5);
- DBObject history = new BasicDBObject().append("name", "history").append("score", 10).append("id", 6);
- courseList.add(chinese);
- courseList.add(history);
- course.insert(courseList);
- //新增內嵌文件
- String json2 =" {'name':'english','score':10,'teacher':[{'name':'柳鬆','id':'1'},{'name':'柳鬆鬆','id':2}]}";
- DBObject english2= (DBObject)JSON.parse(json);
- course.insert(english2);
- List<DBObject> list = new ArrayList<DBObject>();
- list.add(new BasicDBObject("name","柳鬆").append("id",1));
- list.add(new BasicDBObject("name","柳鬆鬆").append("id",2));
- DBObject english3= new BasicDBObject().append("name","english").append("score",10).append("teacher",list);
- //查詢
- //查詢所有、查詢一個文件、條件查詢
- DBCursor cur = course.find();
- while(cur.hasNext()){
- DBObject document = cur.next();
- System.out.println(document.get("name"));
- }
- DBObject document = course.findOne();
- String name=(String)document.get("name");
- System.out.println(name);
- //查詢學分=5的
- DBObject query1 = new BasicDBObject("score",5);
- DBObject query2 = new BasicDBObject("score",new BasicDBObject("$gte",5));
- DBCursor cur2 = course.find(query2);
- //條件表示式:$ge(>) $get(>=) $lt(<) $lte(<=) $ne(<>) $in $nin $all $exists $or $nor $where $type等等
- //查詢並修改
- DBObject newDocument = course.findAndModify(new BasicDBObject("score",5), new BasicDBObject("score",15));
- //更新操作
- //q:更新條件 o:更新後的物件
- course.update(new BasicDBObject("score",10), new BasicDBObject("test",15));
- course.update(new BasicDBObject("score",15), new BasicDBObject("$set",new BasicDBObject("isRequired",true)));
- //兩個的區別是,第一個更新是將{"test":15}這個文件替換原來的文件,
- //第二個更新添加了條件表示式$set,是在原來文件的基礎上新增"isRequired"這個鍵
- //條件表示式:$set $unset $push $inc $push $push $addToSet $pull $pullAll $pop等等
- //當_id相同時,執行save方法相當於更新操作
- course.save(new BasicDBObject("name","math").append("_id", 1));
- course.save(new BasicDBObject("name","數學").append("_id", 1));
- //刪除符合條件的文件
- course.remove(new BasicDBObject("score",15));
- //刪除集合及所有文件
- course.drop();<span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space: normal;">
- </span></span>
上面只是介紹了一些簡單的操作,具體複雜的查詢更新可以根據需求再去查詢文件資料。其實,不管操作簡單還是複雜,其核心都是對DBObject和DBCollection的操作,主要掌握DBObject如何構造鍵值對,以及一些條件表示式。