Java操作MongoDB

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

  java驱动程序是Mongodb中的驱动程序之一,也是比较成熟的Mongodb驱动程序之一,下面介绍了使用java连接、操作Mongodb。

          一、安装java驱动程序

                 Mongodb的java驱动程序是一个jar包,可以在:https://github.com/mongodb/mongo-java-driver/downloads 下载,下载的jar导入到eclipse的项目中即可。

          二、java操作Mongodb

                 java操作Mongodb常用的几个类:

                Mongo:连接服务器,执行一些数据库操作的选项,如新建立一个数据库等

                DB:对应一个数据库,可以用来建立集合等操作

                DBCollection:对应一个集合(类似表),可能是我们用得最多的,可以添加删除记录等

                DBObject接口和BasicDBObject对象:表示一个具体的记录,BasicDBObject实现了DBObject,是key-value的数据结构,用起来和HashMap是基本一致的。

                DBCursor:用来遍历取得的数据,实现了Iterable和Iterator

 

private static void mongodbOperating(){ 		try { 			//有多种构造方法,选择一种(IP、port) 			Mongo m = new Mongo( "192.168.21.111" , 27017 ); 			//选择数据库,如果没有这个数据库的话,会自动建立 			DB  db = m.getDB( "mydb" );  			//建立一个集合,和数据库一样,如果没有,会自动建立 			DBCollection collection = db.getCollection("myCollectionTest"); 			 			BasicDBObject doc = new BasicDBObject(); 	        doc.put("name", "MongoDB"); 	        doc.put("type", "database"); 	        doc.put("count", 1);  	        BasicDBObject info = new BasicDBObject(); 	        info.put("x", 203); 	        info.put("y", 102); 	        doc.put("info", info);  	        //插入一条数据,数据如下 	        // { 	        //	   "name" : "MongoDB", 	        //	   "type" : "database", 	        //	   "count" : 1, 	        //	   "info" : { 	        //	               x : 203, 	        //	               y : 102 	        //	             } 	        //	}             // 可以循环插入多条数据 	        collection.insert(doc); 	        //查找第一条数据,显示如下,_id是系统自动帮加上的,全局唯一 	        //{ "_id" : "49902cde5162504500b45c2c" , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}} 	        DBObject myDoc = collection.findOne(); 	        System.out.println(myDoc); 	         	        //插入多条数据 	        for (int i=0; i < 100; i++) { 	        	collection.insert(new BasicDBObject().append("i", i)); 	        }  	         	        //获取文档条数 	        System.out.println(collection.getCount()); 	         	        //使用Cursor 获取所有文档 	        DBCursor cursor = collection.find(); 	        try { 	            while(cursor.hasNext()) { 	                System.out.println(cursor.next()); 	            } 	        } finally { 	            cursor.close(); 	        } 	         	        //查找操作,获取单条记录 	        //{ "_id" : "49903677516250c1008d624e" , "i" : 71 } 	        BasicDBObject query = new BasicDBObject(); 	        query.put("i", 71); 	        cursor = collection.find(query); 	        try { 	            while(cursor.hasNext()) { 	                System.out.println(cursor.next()); 	            } 	        } finally { 	            cursor.close(); 	        }              //查找 i>50的项 	        query = new BasicDBObject(); 	        query.put("i", new BasicDBObject("$gt", 50));  // e.g. find all where i > 50 	        cursor = collection.find(query); 	        try { 	            while(cursor.hasNext()) { 	                System.out.println(cursor.next()); 	            } 	        } finally { 	            cursor.close(); 	        }   	        //查找 20<i<=30 	        query = new BasicDBObject(); 	        query.put("i", new BasicDBObject("$gt", 20).append("$lte", 30));  // i.e.   20 < i <= 30 	        cursor = collection.find(query); 	        try { 	            while(cursor.hasNext()) { 	                System.out.println(cursor.next()); 	            } 	        } finally { 	            cursor.close(); 	        }  	        //修改 i=71的一项 	        query = new BasicDBObject(); 	        query.put("i", 71); 	        BasicDBObject update = new BasicDBObject(); 	        update.put("i", 710); 	        DBObject dbobj = collection.findAndModify(query, update); 	        System.out.println(dbobj); 	         	        //修改 i=72的一项 	        query = new BasicDBObject(); 	        query.put("i", 72); 	        update = new BasicDBObject(); 	        update.put("i", 720); 	        WriteResult result = collection.update(query, update); 	        System.out.println(result); 	         	        //删除i=61的项 	        query = new BasicDBObject(); 	        query.put("i", 61); 	        collection.findAndRemove(query); 	        //删除i=62的项 	        BasicDBObject remove = new BasicDBObject(); 	        remove.put("i", 62); 	        collection.remove(remove); 	                     //创建索引 1为升序、-1为降序 	        collection.createIndex(new BasicDBObject("i", 1));  // create index on "i", ascending  	        //获取索引列表 	        List<DBObject> list = collection.getIndexInfo(); 	        for (DBObject o : list) { 	            System.out.println(o); 	        }  	        //获取数据库列表 	        for (String s : m.getDatabaseNames()) { 	            System.out.println(s); 	        } 	        //获取集合列表 	        Set<String> colls = db.getCollectionNames(); 	        for (String s : colls) { 	            System.out.println(s); 	        }  	        //删除数据库 	        //m.dropDatabase("my_new_db"); 	          		} catch (UnknownHostException e) { 			// TODO Auto-generated catch block 			e.printStackTrace(); 		} 	}


 

 

 

 

http://www.mongodb.org/display/DOCS/Java+Tutorial



     本文转自xyz_lmn51CTO博客,原文链接:http://blog.51cto.com/xyzlmn/1230770,如需转载请自行联系原作者

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
2天前
|
存储 Java
java用modbus4j的RTU去操作那些寄存器(线圈,保持,输入,离散输入寄存器)
java用modbus4j的RTU去操作那些寄存器(线圈,保持,输入,离散输入寄存器)
9 0
|
10天前
|
Java 数据库 数据安全/隐私保护
Java操作Excel文件导入导出【内含有 jxl.jar 】
Java操作Excel文件导入导出【内含有 jxl.jar 】
22 0
|
17天前
|
存储 缓存 Java
滚雪球学Java(59):从基础到高阶:Java中LinkedList的操作指南
【6月更文挑战第13天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
12 1
滚雪球学Java(59):从基础到高阶:Java中LinkedList的操作指南
|
4天前
|
Java
使用kafka-clients操作数据(java)
使用kafka-clients操作数据(java)
14 6
|
6天前
|
安全 Java 程序员
在Java中,finalization是一种机制,允许对象在被垃圾收集器回收之前执行一些清理操作。
【6月更文挑战第24天】Java中的finalization机制允许对象在被垃圾收集前执行清理,以释放系统资源或处理敏感信息。`finalize()`方法用于定义此类操作,但它不是可靠的资源管理策略,因为调用时机不确定且可能影响性能。尽管可用于清理外部资源或作为保护措施,但应避免依赖finalization,而应优先采用手动资源管理,遵循“创建者负责”原则。
11 1
|
11天前
|
Java
在Java中,你可以创建一个简单的四则运算程序来执行小学级别的加减乘除操作
【6月更文挑战第19天】Java程序实现简单四则运算,接收用户输入的两个数字和运算符,根据运算符调用相应函数进行计算。包含加、减、乘、除功能,其中除法操作检查了除数是否为零,避免运行时错误。
23 5
|
9天前
|
Java 索引
从干将莫邪的故事说起--java比较操作注意要点
从干将莫邪的故事说起--java比较操作注意要点
|
10天前
|
NoSQL Java Redis
如何在 Java 中操作这些 Redis 数据结构的基本方法
如何在 Java 中操作这些 Redis 数据结构的基本方法
13 2
|
11天前
|
Java API
使用 Java 来实现两个 List 的差集操作
使用 Java 来实现两个 List 的差集操作
15 3
|
11天前
|
算法 搜索推荐 Java
二叉树的基本概念、常见操作以及如何使用Java代码
二叉树的基本概念、常见操作以及如何使用Java代码
10 1