《MongoDB权威指南》学习整理----Java操作MongoDB实例

简介

虽然上面我们介绍了很多MongoDB的知识,但是对于J2EE程序猿来说,我们最多的还是通过MongoDB的Driver来实现对MongoDB实例的操作,虽然我们在实际会遇到各种各种的MongoDB操作,但是都是较为复杂的CRUD,所以我在这里知识简单的介绍下MongDB在Java中的使用,驱动的下载地址推荐使用maven连接OSChina的服务器下载,起码我是这样的,这里我并没有介绍太复杂的MongoDB实例的使用,主要是自己在实际工作中还没有用到,以后使用中会更多的补充。好了,废话已经说完,上代码:

代码

public class ChemSearch {

	public static void main(String[] args) {
		try {
			//创建MongoDB实例地址和端口集合
			List<ServerAddress> seeds = new ArrayList<ServerAddress>();
			seeds.add(new ServerAddress("localhost", 27017));
			//创建对应的验证信息
			//MongoDB验证在实例启动时使用--auth
			List<MongoCredential> credentialsList = new ArrayList<MongoCredential>();
			credentialsList.add(MongoCredential.createMongoCRCredential("test1", "test", "ljcxlzbjwan".toCharArray()));
			//创建MongoDB实例客户端连接
			MongoClient client = new MongoClient(seeds, credentialsList);
			//得到目标数据库
			DB test = client.getDB("test");		
			//遍历目标数据库中的所有集合并答应
			for(String collectionName:test.getCollectionNames()){
				System.out.println(collectionName);
			}
			//创建并得到目标集合
			DBCollection collection = test.createCollection("javaTest", null);
			//创建一个Java对象
			Student student = new  Student();
			student.setAge(24);
			student.setName("李小呆");
			Grade grade = new Grade();
			grade.setName(3);
			grade.setTeacherName("李小呆");
			student.setGrade(grade);
			//插入数据到collection
			insertDocToCollection(student,collection);
			//查询当前集合下的所有文档
			DBCursor cursor= collection.find();
			printInter(cursor.iterator());
			Student student1 = new  Student();
			student1.setAge(27);
			student1.setName("李小呆1");
			student1.setGrade(grade);
			insertDocToCollection(student1, collection);
			cursor= collection.find();
			printInter(cursor.iterator());
			//根据条件查询
			BasicDBObject query = new BasicDBObject();
			query.put("age", 27);
			DBObject new_info = collection.findOne(query);
			System.out.println(new_info);
			//更新数据
			BasicDBObject temp = new BasicDBObject();
			BasicDBObject temp1 = new BasicDBObject("age", 2);
			temp.put("$inc", temp1);
			collection.update(query, temp	);
			cursor= collection.find();
			printInter(cursor.iterator());
			//删除数据
			collection.remove(query);
			cursor= collection.find();
			printInter(cursor.iterator());
			
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}
	}
	
	@SuppressWarnings("rawtypes")
	private static void printInter(Iterator iterator){
		while(iterator.hasNext()){
			System.out.println(iterator.next());
		}
	}

	private static void insertDocToCollection(Object obj, DBCollection collection) {
		try {
			BasicDBObject stu1 = (BasicDBObject)objToDoc(obj);
			collection.insert(stu1);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@SuppressWarnings("rawtypes")
	private static DBObject objToDoc(Object obj) throws IllegalArgumentException, IllegalAccessException {
		BasicDBObject basicDBObject = new BasicDBObject();
		Class cls = obj.getClass();
		for(Field field : cls.getDeclaredFields()){
			field.setAccessible(true);
			if(field.getType().getPackage().getName().startsWith("java.lang")){
				basicDBObject.put(field.getName(), field.get(obj));
			}else{
				basicDBObject.put(field.getName(), objToDoc(field.get(obj)));
			}
		}
		return basicDBObject;
	}
}

简单说明

通过上面的代码我们可以简单的看出来,MongoDB中文档的概念都是由JAVA中的DBObject接口来抽象化的,而我们常用的是BasicDBObject类。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值