`
jzkangta
  • 浏览: 160997 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java操作mongoDB

    博客分类:
  • JAVA
阅读更多
这段时间一直在研究mongoDB,由于资料很少,网上的又都是互相抄袭,真正学到的不多。官方文档对我来说又很难看懂,总之我是看的都想放弃了的。
但还好坚持了下来,现在把学习的心得记录一下。

程序员特点,没有废话,直接上代码:
public class Test2 {

	@Test
	public void setDBData(){
		// 连接本地数据库   
		try {
			Mongo m = new Mongo( "localhost" , 27017 );
			//创建名为test_db的数据库   
	        DB db = m.getDB("test_db");  
	        //获取test_table中的集合(类似于获取关系数据库中的表)   
	        Set<String> cols = db.getCollectionNames();   
	        //创建一个叫做"test_table"的集合   
	        DBCollection collection = db.getCollection("test_table");
	        for(int i=0;i<100;i++){
	        	 //基本DB对象,最终插入数据库的就是这个DB对象   
		        BasicDBObject obj = new BasicDBObject();  
		        obj.put("id", i);
		        obj.put("fid", i%30);
		        obj.put("uid", "name"+i%60);
		        obj.put("groupid", i%40);
		        obj.put("ip", "192.168.0."+(i+1)%40);
		        obj.put("regTime", new Date());
		        collection.insert(obj);
	        }
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	@Test
	public void getDBData(){
		// 连接本地数据库   
		try {
			Mongo m = new Mongo( "localhost" , 27017 );
			//创建名为test_db的数据库   
	        DB db = m.getDB("test_db");  
	        //创建一个叫做"test_table"的集合   
	        DBCollection collection = db.getCollection("test_table");
	        //排序 1为升序  -1为降序
			DBCursor cursor=collection.find().sort(new BasicDBObject("id",-1));   //排序 1为升序  -1为降序
			//DBCursor cursor=collection.find().limit(10);   //只取前十个
	        //DBCursor cursor=collection.find().skip(10); //取前十个记录之后的
	        //collection.find().count()  ;  //总记录数
	        //select * from test_table where id>=10 and id<30  注:$gt=(>)  $gte=(>=)  $lt=(<) $lte=(<=)  $ne=(!=)
	        //DBCursor cursor = collection.find(new BasicDBObject("id",new BasicDBObject("$lt", 30).append("$gte", 10)));
			/**
			//select * form table where id in (1,12,23)
			int [] strs = new int[3];  //其实也可以放在List里面
			strs[0] = 1;
			strs[1] = 12;
			strs[2] = 23;
			DBCursor cursor=collection.find(new BasicDBObject("id",new BasicDBObject("$in",strs)));
			*/
			
	        /**查询特定字段
	        DBObject query = new BasicDBObject();//要查的条件
	        query.put("uid", "name10");
	        DBObject field = new BasicDBObject();//要查的哪些字段
	        field.put("id", true);
	        field.put("fid", true);
	        field.put("ip", true);
	        DBCursor cursor=collection.find(query,field);
	        */
								

			while(cursor.hasNext()){   
		        System.out.println(cursor.next());   
		    }   
	        /** select distinct("uid") from table
	         * 注意:distinct("uid")这个字段是什么类型,list.get(i)就是什么类型
			List list=(List) collection.distinct("uid");
			for(int i=0;i<list.size();i++){
				System.out.println(list.get(i));
			}
			*/
	        
			/**按照groupid分组,并且分组后计算fid的sum
			//select groupid ,sum(fid) fidCount form  table group by groupid
	        //key是group by 的字段
	        BasicDBObject key = new BasicDBObject();
	        key.put("groupid", true);
	        
	        //cond是where的条件 可以为空
	        BasicDBObject cond = new BasicDBObject();
	        
	        //initial是字段sum的初始值
	        BasicDBObject initial = new BasicDBObject();
	        initial.put("fidCount", 0);
	        
	        //reduce是分解归纳求和 fid的sum
	        String reduce = "function(obj,prev) { prev.fidCount +=obj.fid; }";

	        DBObject obj = collection.group(key, cond, initial, reduce);
	        Set set = obj.keySet();
	        Iterator it = set.iterator();
	        int i=0;
	        while(it.hasNext()){
	        	String str_key = (String) it.next();
	        	System.out.println(obj.get(str_key));
	        	i++;
	        }
			*/
			
	        
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	@Test
	public void deleteTable(){
		try {
			Mongo m = new Mongo( "localhost" , 27017 );
			//创建名为test_db的数据库   
			DB db = m.getDB("test_db");
			//db.dropDatabase();  //删除数据库
			DBCollection collection = db.getCollection("test_table");
			//collection.drop();  //删除表
			collection.remove(new BasicDBObject()); //清空表数据
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
	}
	
	@Test
	public void findDataByParams(){
		try {
			Mongo m = new Mongo( "localhost" , 27017 );
			//创建名为test_db的数据库   
			DB db = m.getDB("test_db");
			DBCollection collection = db.getCollection("test_table");
			DBObject obj = new BasicDBObject();
			//select ip,groupid form table where uid=name1
			obj.put("uid", "name1");
			DBCursor cursor=collection.find(obj,new BasicDBObject("ip",1).append("groupid", 1));  
			while(cursor.hasNext()){   
		        System.out.println(cursor.next());   
		    }  
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
	}
	
	@Test
	public void updateData(){
		try {
			Mongo m = new Mongo( "localhost" , 27017 );
			//创建名为test_db的数据库   
			DB db = m.getDB("test_db");
			DBCollection collection = db.getCollection("test_table");
			/**  以下是用findAndModify方法更改数据
			DBObject obj = new BasicDBObject();
			obj.put("uid", "name59");
			DBObject obj2 = new BasicDBObject();
			obj2.put("ip", "111.111.111.333");
			//UPDATE test_table  SET ip = 111.111.111.333 WHERE uid=name59;  
			DBObject objOld = collection.findAndModify(obj, new BasicDBObject("$set",obj2));
			System.out.println("objOld==="+objOld);   
			//这里,findAndModify方法执行后,返回的DBObject内容还是旧的内容,但是数据库里的记录已经改为了新的记录
			//如下:
			DBCursor cursor= collection.find(obj);
			while(cursor.hasNext()){   
		        System.out.println("objNew=="+cursor.next());   
		    } 
		    */
			
			// 以下是用update方法更改数据  注:findOne是返回满足条件的第一个记录
			// UPDATE test_table  SET ip = 100.100.100.333 WHERE uid=name59;  
			DBObject obj = new BasicDBObject();
			obj.put("uid", "name59");
			DBObject obj2 = collection.findOne(obj);
			obj2.put("ip", "100.100.100.333");
			collection.update(obj, obj2);
			System.out.println("==="+collection.findOne(obj));   
		
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
	}
	
	@Test
	public void deleteData(){
		try {
			Mongo m = new Mongo( "localhost" , 27017 );
			//创建名为test_db的数据库   
			DB db = m.getDB("test_db");
			DBCollection collection = db.getCollection("test_table");
			DBObject obj = new BasicDBObject();
			obj.put("uid", "name59");
			//删除数据
			collection.remove(obj);  
			getDBData();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
	}
	
}


以上对mongodb的基本操作应该够用,现在还有弄不明白的就是它的模糊查询和MapReduce的用法,模糊查询只知道是用正则来实现。
以后有空再细细摸索一下吧
分享到:
评论

相关推荐

    java操作mongodb存储文件实例

    将一系列图片文件存储到MongoDB中 java操作mongodb存储文件

    java 操作mongodb

    【Java 操作 MongoDB 知识点详解】 MongoDB 是一个流行的开源、分布式文档数据库系统,以其灵活性、高性能和高可用性而受到欢迎。在 Java 开发环境中,可以通过 MongoDB 的 Java 驱动程序来实现对 MongoDB 数据库的...

    java 操作mongodb 增删改查

    以上就是Java操作MongoDB的基本步骤。这个“mongodb_helloworld”项目应该包含示例代码,帮助初学者快速上手。记得在实际应用中,你需要处理异常并适当地关闭MongoClient,以避免资源泄漏: ```java mongoClient....

    Mongodb + GridFS +Java 操作Mongodb中存储的文件

    在这个Java操作MongoDB中存储的文件实例中,我们将探讨如何利用GridFS API进行文件的存取。 首先,我们需要在Java项目中引入MongoDB的驱动库。目前,Java驱动通常使用的是MongoDB Java Driver,可以在Maven仓库中...

    java操作mongoDB(CRUD)

    Java操作MongoDB主要涉及到的是Java驱动程序与MongoDB数据库之间的交互,这涵盖了创建连接、执行CRUD(创建、读取、更新、删除)操作等一系列基本的数据库管理任务。MongoDB是一个流行的NoSQL数据库,以其灵活性、高...

    java操作mongodb示例分享

    Java操作MongoDB是一种常见的数据交互方式,特别是在Java后端开发中。MongoDB是一个NoSQL数据库,以其灵活性、高性能和易扩展性而受到欢迎。在Java中,我们可以使用MongoDB的Java驱动程序来与MongoDB进行通信。以下...

    JAVA操作MongoDB简单增删改查

    以上就是使用Java操作MongoDB的基本步骤。在实际项目中,你可能需要处理更复杂的查询和事务,以及错误处理和连接池管理等高级话题。学习更多关于MongoDB的官方文档和社区资源,如CSDN博客...

    Java操作MongoDB实例

    Java操作MongoDB实例,压缩包内为完整项目源码,使用MyEclipse软件 见文:https://blog.csdn.net/qq_33427869/article/details/87270444

    java操作mongoDB实现文件上传预览打包下载

    对于"java操作mongoDB实现文件上传预览打包下载"这个主题,我们将深入探讨如何利用Java与MongoDB交互,实现文件的上传、下载、预览以及打包下载等功能。 首先,我们需要在Java项目中引入MongoDB的驱动库,通常是...

    Java操作MongoDB之CRUD(增删改查)

    这篇博文“Java操作MongoDB之CRUD(增删改查)”主要探讨了如何使用Java驱动程序来执行基本的数据库操作,包括创建(Create)、读取(Read)、更新(Update)和删除(Delete)。 首先,我们来了解MongoDB的Java驱动...

    java操作mongodb的工具类

    java操作mongodb的工具类,增删查改方法

    JAVA操作MongoDB之spring整合

    在本文中,我们将深入探讨如何使用Java操作MongoDB并结合Spring框架进行整合。MongoDB是一个流行的NoSQL数据库,它以JSON格式存储数据,适合处理大量非结构化或半结构化数据。Spring框架则是一个强大的Java企业级...

    Java操作mongoDB使用文档.docx(16页.docx

    以上就是使用Java操作MongoDB的基本步骤。在实际应用中,你可能需要处理更复杂的查询和更新,以及错误处理、连接管理等。MongoDB提供了丰富的查询表达式,如`$gt`, `$lt`, `$in`, `$exists`等,以及聚合框架和地理...

    java操作mongodb的demo(带驱动jar)

    Java操作MongoDB是一种常见的数据交互方式,特别是在大数据和分布式系统中。MongoDB是一个高性能、开源、无模式的文档型数据库,而Java作为广泛使用的编程语言,提供了丰富的库和API来与MongoDB进行交互。本Demo提供...

    Java操作MongoDB数据库示例分享

    为了更深入地了解如何使用Java操作MongoDB,你需要学习以下知识点: 1. **MongoDB Java驱动程序**:了解如何添加驱动程序依赖,以及如何创建`MongoClient`实例来连接到MongoDB服务器。 2. **数据模型**:理解...

    JAVA操作MongoDB

    ### JAVA操作MongoDB知识点详解 #### 1. Java操作MongoDB简介 MongoDB是一种面向文档的NoSQL数据库,它提供了灵活的文档模型和高性能的读写操作,非常适合处理大量的数据和快速迭代的开发环境。而Java是一种广泛...

    java操作mongodb

    Java 操作 MongoDB 是一个常见的需求,特别是在开发基于 Java 的应用程序时需要存储和检索非结构化数据。本篇文章将深入探讨如何使用 Java SDK 来与 MongoDB 进行交互,包括基本的增、删、改、查操作。 首先,要...

Global site tag (gtag.js) - Google Analytics