mongoDB——java操作mongodb文档

上篇博客介绍了Java操作MongoDB进行对文件的处理。现在来介绍一下对文档的处理。和对文件的处理一样,也是通过java驱动中提供的几个类相互作用完成的。这几个类分别是:

      DBCollection类:指定数据库中指定集合的实例,提供了增删改查等一系列操作。在关系型数据库中,对数据的增删改查操作是建立在表的基础上的,在mongodb中是建立在集合的基础上进行的。

      DBObject接口:DBObject是键值的映射,因此,可以将DBObject的实现类作为查询的返回结果,也可以作为查询条件

      DBCursor:游标,返回结果的集合。

    下面是部分实例:

[java]  view plain  copy
  1. Mongo mongo = new Mongo();  
  2. DB db = mongo.getDB("myMongoDB");  
  3. DBCollection course = db.getCollection("course");//对myMongoDB数据库中course集合进行操作  
  4.   
  5.   
  6.   
  7. //添加操作  
  8. //下面分别是创建文档的几种方式:1. .append()  2. .put()   3. 通过map   4. 将json转换成DBObject对象  
  9. DBObject english = new BasicDBObject().append("name","english").append("score"5).append("id",1);  
  10. course.insert(english);  
  11.           
  12. DBObject math = new BasicDBObject();  
  13. math.put("id"2);  
  14. math.put("name""math");  
  15. math.put("score"10);  
  16. course.insert(math);  
  17.           
  18. Map map = new HashMap();  
  19. map.put("name","physics" );  
  20. map.put("score"10);  
  21. map.put("id"3);  
  22. DBObject physics= new BasicDBObject(map);  
  23. course.insert(physics);  
  24.           
  25. String json ="{'name':'chemistry','score':10,'id':4}";  
  26. DBObject chemistry =(DBObject)JSON.parse(json);  
  27. course.insert(chemistry);  
  28.           
  29. List courseList = new ArrayList();  
  30. DBObject chinese = new BasicDBObject().append("name","chinese").append("score"10).append("id"5);  
  31. DBObject history = new BasicDBObject().append("name""history").append("score"10).append("id"6);  
  32. courseList.add(chinese);  
  33. courseList.add(history);  
  34. course.insert(courseList);  
  35.           
  36. //添加内嵌文档  
  37. String json2 =" {'name':'english','score':10,'teacher':[{'name':'柳松','id':'1'},{'name':'柳松松','id':2}]}";  
  38. DBObject english2= (DBObject)JSON.parse(json);  
  39. course.insert(english2);  
  40.           
  41. List list = new ArrayList();  
  42. list.add(new BasicDBObject("name","柳松").append("id",1));  
  43. list.add(new BasicDBObject("name","柳松松").append("id",2));  
  44. DBObject english3= new BasicDBObject().append("name","english").append("score",10).append("teacher",list);  
  45.           
  46.           
  47. //查询  
  48. //查询所有、查询一个文档、条件查询  
  49. DBCursor cur = course.find();  
  50. while(cur.hasNext()){  
  51.       DBObject document = cur.next();  
  52.       System.out.println(document.get("name"));  
  53.   }  
  54.           
  55. DBObject document = course.findOne();  
  56. String name=(String)document.get("name");  
  57. System.out.println(name);  
  58.           
  59.           
  60. //查询学分=5的  
  61. DBObject query1 = new BasicDBObject("score",5);  
  62. DBObject query2 = new BasicDBObject("score",new BasicDBObject("$gte",5));  
  63. DBCursor cur2 = course.find(query2);  
  64. //条件表达式:$ge(>)  $get(>=)  $lt(<)  $lte(<=)  $ne(<>)  $in  $nin  $all $exists $or  $nor $where $type等等  
  65.           
  66.   
  67. //查找并修改       
  68. DBObject newDocument = course.findAndModify(new BasicDBObject("score",5), new BasicDBObject("score",15));  
  69.   
  70. //更新操作        
  71. //q:更新条件  o:更新后的对象  
  72. course.update(new BasicDBObject("score",10), new BasicDBObject("test",15));  
  73. course.update(new BasicDBObject("score",15), new BasicDBObject("$set",new BasicDBObject("isRequired",true)));  
  74. //两个的区别是,第一个更新是将{"test":15}这个文档替换原来的文档,  
  75. //第二个更新添加了条件表达式$set,是在原来文档的基础上添加"isRequired"这个键  
  76. //条件表达式:$set  $unset  $push  $inc  $push $push  $addToSet  $pull $pullAll  $pop等等  
  77.   
  78. //当_id相同时,执行save方法相当于更新操作  
  79. course.save(new BasicDBObject("name","math").append("_id"1));  
  80. course.save(new BasicDBObject("name","数学").append("_id"1));  
  81.   
  82.           
  83.           
  84. //删除符合条件的文档  
  85. course.remove(new BasicDBObject("score",15));  
  86.           
  87. //删除集合及所有文档  
  88. course.drop();"font-family:Arial, Helvetica, sans-serif;">"white-space: normal;">  
  89.   

        上面只是介绍了一些简单的操作,具体复杂的查询更新可以根据需求再去查找文档资料。其实,不管操作简单还是复杂,其核心都是对DBObject和DBCollection的操作,主要掌握DBObject如何构造键值对,以及一些条件表达式。


文章出处:http://blog.csdn.net/liusong0605/article/details/11529155

你可能感兴趣的:(NoSQL,——,mongoDB,nosql,mongodb)