Java操作MongoDB,下面是一个完整的例子。本实例需导入mongo-2.5.3.jar
- importjava.net.UnknownHostException;
- importjava.util.Iterator;
- importjava.util.Set;
- importcom.mongodb.BasicDBObject;
- importcom.mongodb.DB;
- importcom.mongodb.DBCollection;
- importcom.mongodb.DBCursor;
- importcom.mongodb.DBObject;
- importcom.mongodb.Mongo;
- importcom.mongodb.MongoException;
- publicclassMongoMain{
- staticDBdb=null;
- staticDBCollectioncoll=null;
- static{
- Mongom=null;
- try{
- //m=newMongo();//默认本地
- //m=newMongo("127.0.0.1");//默认端口
- m=newMongo("127.0.0.1",27017);
- }catch(UnknownHostExceptione){
- e.printStackTrace();
- }catch(MongoExceptione){
- e.printStackTrace();
- }
- //获取名为test的数据库,不存在的情况下创建
- db=m.getDB("test");
- //登录数据库(用户名:test,密码:test)
- booleanauth=db.authenticate("test","test".toCharArray());
- if(auth){
- //只有admin中的用户才有此权限(showdbs)
- //获取所有数据库,不显示无collection的db
- //System.out.println("所有数据库名:"+m.getDatabaseNames());
- //获取名为user的collection(相当于表),不存在的情况下创建
- coll=db.getCollection("user");
- }else{
- System.out.println("登录失败!");
- }
- }
- publicstaticvoidmain(String[]args){
- MongoMaintest=newMongoMain();
- if(coll!=null){
- test.saveData();
- test.searchData();
- test.updateData();
- test.deleteData();
- }
- }
- /**
- *保存数据
- */
- publicvoidsaveData(){
- //录入学生1的信息
- BasicDBObjectstu1=newBasicDBObject();
- stu1.put("name","jack");
- stu1.put("age","25");
- BasicDBObjectsight1=newBasicDBObject();
- sight1.put("left",1.5);
- sight1.put("right",1.2);
- stu1.put("sight",sight1);
- //录入学生2的信息
- BasicDBObjectstu2=newBasicDBObject();
- stu2.put("name","lucy");
- stu2.put("age","22");
- BasicDBObjectsight2=newBasicDBObject();
- sight2.put("left",1.0);
- sight2.put("right",1.3);
- stu2.put("sight",sight2);
- //注意:不能直接对sight赋值{left:1.0,right:1.3}
- coll.insert(stu1);
- coll.insert(stu2);
- }
- /**
- *查询数据
- */
- publicvoidsearchData(){
- System.out.println("=======================");
- //showcollections
- //获取数据库下所有的collection,不显示无数据的collection
- Set<String>colls=db.getCollectionNames();
- showData(colls);
- System.out.println("=======================");
- //查询coll中全部记录
- DBCursorite=coll.find();
- showData(ite);
- System.out.println("=======================");
- //获取第一条记录
- DBObjecto=coll.findOne();
- System.out.println(o);
- System.out.println("=======================");
- //统计colletion的数据条数
- System.out.println(coll.getCount());
- System.out.println("=======================");
- //查询name为jack的对象
- BasicDBObjectquery=newBasicDBObject();
- query.put("name","jack");
- DBCursorit=coll.find(query);
- showData(it);
- System.out.println("=======================");
- //查询age小于30,age不等于20的对象
- BasicDBObjectquery2=newBasicDBObject();
- query2.put("age",newBasicDBObject("$lt",30));
- query2.put("age",newBasicDBObject("$ne",20));
- DBCursorit2=coll.find(query2);
- showData(it2);
- }
- /**
- *修改数据
- */
- publicvoidupdateData(){
- BasicDBObjectquery=newBasicDBObject();
- query.put("name","lucy");
- //这里的new_info对象一定要是find出的而不是new的,否则多字段的情况下就会丢失其它字段信息
- DBObjectnew_info=coll.findOne(query);
- //方法一(缺点,必须把2个值都put进去)
- BasicDBObjectsight=newBasicDBObject();
- sight.put("left",1.3);
- sight.put("right",1.3);
- new_info.put("sight",sight);
- //方法二(优点,只需设置要修改的字段的值)
- DBObjectobj=(DBObject)new_info.get("sight");
- obj.put("right",1.5);
- coll.update(query,new_info);
- }
- /**
- *删除数据
- */
- publicvoiddeleteData(){
- BasicDBObjectdata=newBasicDBObject();
- //删除名称为lucy的记录
- data.put("name","lucy");
- //传入[空实例]删除所有
- coll.remove(data);
- }
- /**
- *遍历显示结果
- *@paramresult
- */
- @SuppressWarnings("rawtypes")
- publicvoidshowData(Iterableresult){
- Iteratorit=result.iterator();
- while(it.hasNext())
- {
- System.out.println(it.next());
- }
- }
- }