MongoDB与JAVA CRUD

本文介绍java如何对MongoDB数据库进行CRUD操作。

1、测试环境

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. (1) OS:windows XP  
  2. (2) DataBase:MongoDB V 1.8.1  
  3. (3) Driver:mongo-2.6.5.jar  
  4. (4) Test:junit-4.10.jar  
2、初始化连接

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. private Mongo mongo = null;  
  2.     private DB db = null;  
  3.     private DBCollection dbCollection = null;  
  4.       
  5.     @Before  
  6.     public void init(){  
  7.         try {  
  8.             mongo = new Mongo("localhost",27017);   
  9.             db = mongo.getDB("test");  
  10.             dbCollection = db.getCollection("emp");  
  11.         } catch (UnknownHostException e) {  
  12.             e.printStackTrace();  
  13.         } catch (MongoException e) {  
  14.             e.printStackTrace();  
  15.         }  
  16.     }  
上述代码是连接MongoDB数据库的,基本上分为三步:

(1)建立连接 (2)获取要操作的数据库实例  (3)获取要操作的集合实例

3、关闭连接

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. @After  
  2.     public void destroy(){  
  3.         if(mongo != null){  
  4.             mongo.close();  
  5.             mongo = null;  
  6.             db = null;  
  7.             dbCollection = null;  
  8.         }  
4、CRUD操作

(1)C---插入记录

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1.       /** 
  2.  * 插入10条记录 
  3.  * 指定_id 
  4.  */  
  5. @Test  
  6. public void testCreate(){  
  7.     DBObject obj = null;  
  8.     for(int i=1;i<=10;i++){  
  9.         obj = new BasicDBObject("_id",i).append("name""yy"+i).append("age", i*10);  
  10.         dbCollection.save(obj);  
  11.     }  
  12. }  
插入新的记录时,上述代码使用的是save接口。

(2)R—查询所有记录

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. @Test  
  2.     public void testReadAll(){  
  3.         DBCursor cursor = dbCollection.find();  
  4.         while(cursor.hasNext()){  
  5.             System.out.println(cursor.next());  
  6.         }  
  7.     }  
结果如下:

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1.       { "_id" : 1 , "name" : "yy1" , "age" : 10}  
  2. { "_id" : 2 , "name" : "yy2" , "age" : 20}  
  3. { "_id" : 3 , "name" : "yy3" , "age" : 30}  
  4. { "_id" : 4 , "name" : "yy4" , "age" : 40}  
  5. { "_id" : 5 , "name" : "yy5" , "age" : 50}  
  6. { "_id" : 6 , "name" : "yy6" , "age" : 60}  
  7. { "_id" : 7 , "name" : "yy7" , "age" : 70}  
  8. { "_id" : 8 , "name" : "yy8" , "age" : 80}  
  9. { "_id" : 9 , "name" : "yy9" , "age" : 90}  
  10.       { "_id" : 10 , "name" : "yy10" , "age" : 100}  
(3) R—根据主键ID查询记录

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. @Test  
  2.     public void testReadOneWithId(){  
  3.         DBObject obj = dbCollection.findOne(new BasicDBObject("_id",1));  
  4.         System.out.println(obj);  
  5.     }  
结果如下:

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. { "_id" : 1 , "name" : "yy1" , "age" : 10}  
4)R—模糊查询

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. @Test  
  2.     public void testReadPuzzy(){  
  3.         Pattern pattern = Pattern.compile("^yy1");  
  4.         BasicDBObject obj = new BasicDBObject("name",pattern);  
  5.         DBCursor cursor = dbCollection.find(obj);  
  6.         while(cursor.hasNext()){  
  7.             System.out.println(cursor.next());  
  8.         }  
  9.     }  
模糊查询使用到了正则表达式。

结果如下:

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. { "_id" : 1 , "name" : "yy1" , "age" : 10}  
  2. { "_id" : 10 , "name" : "yy10" , "age" : 100}  
(5)  U—修改记录

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. @Test  
  2.     public void testUpdate(){  
  3.           
  4.         BasicDBObject condition = new BasicDBObject("_id",10);  
  5.         BasicDBObject res = new BasicDBObject("name","yy10_new");  
  6.         BasicDBObject res2 = new BasicDBObject("$set",res);  //若没有此语句,直接调用下面的语句,返回结果{ "_id" : 10 , "name" : "yy10_new"}  
  7.         dbCollection.update(condition, res2);  
  8.           
  9.         System.out.println(dbCollection.findOne(new BasicDBObject("_id",10)));  
  10.     }  
结果如下:

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. { "_id" : 10 , "age" : 100 , "name" : "yy10_new"}  
(6)  D—删除记录
[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. @Test  
  2.     public void testDelete(){  
  3.         dbCollection.remove(new BasicDBObject("_id",10));  
  4.           
  5.         testReadAll();  
  6.     }  
结果如下:

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1.    { "_id" : 1 , "name" : "yy1" , "age" : 10}  
  2. { "_id" : 2 , "name" : "yy2" , "age" : 20}  
  3. { "_id" : 3 , "name" : "yy3" , "age" : 30}  
  4. { "_id" : 4 , "name" : "yy4" , "age" : 40}  
  5. { "_id" : 5 , "name" : "yy5" , "age" : 50}  
  6. { "_id" : 6 , "name" : "yy6" , "age" : 60}  
  7. { "_id" : 7 , "name" : "yy7" , "age" : 70}  
  8. { "_id" : 8 , "name" : "yy8" , "age" : 80}  
  9.    { "_id" : 9 , "name" : "yy9" , "age" : 90}  


上述简单介绍了JAVA实现MongoDB数据库 CRUD的操作步骤。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值