1. 程式人生 > >java 操作mongoDB(DBobject,非spring data)

java 操作mongoDB(DBobject,非spring data)

  上篇部落格介紹了Java操作MongoDB進行對檔案的處理。現在來介紹一下對文件的處理。和對檔案的處理一樣,也是通過java驅動中提供的幾個類相互作用完成的。這幾個類分別是:

      DBCollection類:指定資料庫中指定集合的例項,提供了增刪改查等一系列操作。在關係型資料庫中,對資料的增刪改查操作是建立在表的基礎上的,在mongodb中是建立在集合的基礎上進行的。

      DBObject介面:DBObject是鍵值的對映,因此,可以將DBObject的實現類作為查詢的返回結果,也可以作為查詢條件

      DBCursor:遊標,返回結果的集合。

    下面是部分例項:

  1. Mongo mongo = new Mongo();  
  2. DB db = mongo.getDB("myMongoDB");  
  3. DBCollection course = db.getCollection("course");//對myMongoDB資料庫中course集合進行操作
  4. //新增操作
  5. //下面分別是建立文件的幾種方式:1. .append()  2. .put()   3. 通過map   4. 將json轉換成DBObject物件
  6. DBObject english = new BasicDBObject().append("name","english").append("score"
    5).append("id",1);  
  7. course.insert(english);  
  8. DBObject math = new BasicDBObject();  
  9. math.put("id"2);  
  10. math.put("name""math");  
  11. math.put("score"10);  
  12. course.insert(math);  
  13. Map<String,Object> map = new HashMap<String,Object>();  
  14. map.put("name","physics" );  
  15. map.put("score"
    10);  
  16. map.put("id"3);  
  17. DBObject physics= new BasicDBObject(map);  
  18. course.insert(physics);  
  19. String json ="{'name':'chemistry','score':10,'id':4}";  
  20. DBObject chemistry =(DBObject)JSON.parse(json);  
  21. course.insert(chemistry);  
  22. List<DBObject> courseList = new ArrayList<DBObject>();  
  23. DBObject chinese = new BasicDBObject().append("name","chinese").append("score"10).append("id"5);  
  24. DBObject history = new BasicDBObject().append("name""history").append("score"10).append("id"6);  
  25. courseList.add(chinese);  
  26. courseList.add(history);  
  27. course.insert(courseList);  
  28. //新增內嵌文件
  29. String json2 =" {'name':'english','score':10,'teacher':[{'name':'柳鬆','id':'1'},{'name':'柳鬆鬆','id':2}]}";  
  30. DBObject english2= (DBObject)JSON.parse(json);  
  31. course.insert(english2);  
  32. List<DBObject> list = new ArrayList<DBObject>();  
  33. list.add(new BasicDBObject("name","柳鬆").append("id",1));  
  34. list.add(new BasicDBObject("name","柳鬆鬆").append("id",2));  
  35. DBObject english3= new BasicDBObject().append("name","english").append("score",10).append("teacher",list);  
  36. //查詢
  37. //查詢所有、查詢一個文件、條件查詢
  38. DBCursor cur = course.find();  
  39. while(cur.hasNext()){  
  40.       DBObject document = cur.next();  
  41.       System.out.println(document.get("name"));  
  42.   }  
  43. DBObject document = course.findOne();  
  44. String name=(String)document.get("name");  
  45. System.out.println(name);  
  46. //查詢學分=5的
  47. DBObject query1 = new BasicDBObject("score",5);  
  48. DBObject query2 = new BasicDBObject("score",new BasicDBObject("$gte",5));  
  49. DBCursor cur2 = course.find(query2);  
  50. //條件表示式:$ge(>)  $get(>=)  $lt(<)  $lte(<=)  $ne(<>)  $in  $nin  $all $exists $or  $nor $where $type等等
  51. //查詢並修改     
  52. DBObject newDocument = course.findAndModify(new BasicDBObject("score",5), new BasicDBObject("score",15));  
  53. //更新操作      
  54. //q:更新條件  o:更新後的物件
  55. course.update(new BasicDBObject("score",10), new BasicDBObject("test",15));  
  56. course.update(new BasicDBObject("score",15), new BasicDBObject("$set",new BasicDBObject("isRequired",true)));  
  57. //兩個的區別是,第一個更新是將{"test":15}這個文件替換原來的文件,
  58. //第二個更新添加了條件表示式$set,是在原來文件的基礎上新增"isRequired"這個鍵
  59. //條件表示式:$set  $unset  $push  $inc  $push $push  $addToSet  $pull $pullAll  $pop等等
  60. //當_id相同時,執行save方法相當於更新操作
  61. course.save(new BasicDBObject("name","math").append("_id"1));  
  62. course.save(new BasicDBObject("name","數學").append("_id"1));  
  63. //刪除符合條件的文件
  64. course.remove(new BasicDBObject("score",15));  
  65. //刪除集合及所有文件
  66. course.drop();<span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space: normal;">  
  67. </span></span>  

        上面只是介紹了一些簡單的操作,具體複雜的查詢更新可以根據需求再去查詢文件資料。其實,不管操作簡單還是複雜,其核心都是對DBObject和DBCollection的操作,主要掌握DBObject如何構造鍵值對,以及一些條件表示式。