您的位置:首页 > 数据库 > Mongodb

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

2014-03-10 17:16 621 查看

简介

虽然上面我们介绍了很多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类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb 数据库 NoSQL java