- /**
- *MongoDBTest
- *MongoDBJAVAAPI的高级查询示例
- */
- packagecom.labci.mongodb.test;
- importjava.net.UnknownHostException;
- importjava.util.Iterator;
- importcom.mongodb.BasicDBObject;
- importcom.mongodb.DB;
- importcom.mongodb.DBCollection;
- importcom.mongodb.DBCursor;
- importcom.mongodb.DBObject;
- importcom.mongodb.Mongo;
- importcom.mongodb.MongoException;
- /**
- *@authorBillTu(tujiyue/iwtxokhtd)
- *May21,2011[11:33:34PM]
- *
- */
- publicclassMongoDBAdvancedQuery{
- privatestaticfinalStringHOST="192.168.1.86";
- privatestaticfinalintPORT=27017;
- privatestaticfinalStringUSER="iwtxokhtd";
- privatestaticfinalStringPASSWORD="123456";
- privatestaticfinalStringDB_NAME="test";
- privatestaticfinalStringCOLLECTION="data_test";
- privatestaticMongoconn=null;
- privatestaticDBmyDB=null;
- privatestaticDBCollectionmyCollection=null;
- static{
- try{
- conn=newMongo(HOST,PORT);//建立数据库连接
- myDB=conn.getDB(DB_NAME);//使用test数据库
- booleanloginSuccess=myDB.authenticate(USER,PASSWORD.toCharArray());//用户验证
- if(loginSuccess){
- myCollection=myDB.getCollection(COLLECTION);
- }
- }catch(UnknownHostExceptione){
- e.printStackTrace();
- }catch(MongoExceptione){
- e.printStackTrace();
- }
- }
- /**
- *查询数据
- *@paramcollection “表”名
- */
- privatestaticvoidqueryData(DBCollectioncollection){
- //count查询
- System.out.println("表的总记录数为:");
- System.out.println(collection.find().count());
- //分页查询
- DBCursorfindAll=collection.find();
- DBCursorqueryByPage=findAll.skip(3).limit(4);
- printData("从第3条记录起取4条记录为:",queryByPage);
- //orderby操作
- DBObjectorderBy=newBasicDBObject();
- orderBy.put("userName",-1);//按userName倒序排
- DBCursororderByResult=collection.find().sort(orderBy);
- printData("所有记录按userName倒序排为:",orderByResult);
- //"!="和">"操作
- DBObjectnotEqual=newBasicDBObject();
- notEqual.put("$ne","BillTu10");
- DBObjectgreatThan=newBasicDBObject();
- greatThan.put("$gt",7);
- DBObjectnotEqualAndGreatThan=newBasicDBObject();
- notEqualAndGreatThan.put("userName",notEqual);
- notEqualAndGreatThan.put("age",greatThan);
- DBCursornotEqualAndGreatThanResult=collection.find(notEqualAndGreatThan);
- printData("userName!='BillTu10'andage>7的记录为:",notEqualAndGreatThanResult);
- //">="和"<="操作
- DBObjectgreatThanEqualAndLessThanEqual=newBasicDBObject();
- greatThanEqualAndLessThanEqual.put("$gte",2);
- greatThanEqualAndLessThanEqual.put("$lte",7);
- DBObjectageCompare=newBasicDBObject();
- ageCompare.put("age",greatThanEqualAndLessThanEqual);
- DBCursorcompareResult=collection.find(ageCompare);
- printData("age>=2andage<=7的记录为:",compareResult);
- //all操作
- DBObjectall=newBasicDBObject();
- all.put("$all",newObject[]{7,7});
- DBObjectrankAll=newBasicDBObject();
- rankAll.put("rank",all);
- DBCursorrankAllResult=collection.find(rankAll);
- printData("rankinall(7,7)的记录为:",rankAllResult);
- //notin操作
- DBObjectnotIn=newBasicDBObject();
- notIn.put("$nin",newObject[]{2,3});
- DBObjectageNotIn=newBasicDBObject();
- ageNotIn.put("age",notIn);
- DBCursorageNotInResult=collection.find(ageNotIn);
- printData("agenotin(2,3)的记录为:",ageNotInResult);
- //or操作
- DBObjectorGreatThan=newBasicDBObject("$gt",3);
- DBObjectorRankAll=newBasicDBObject("$all",newObject[]{1,1});
- DBObjectageOrGreatThan=newBasicDBObject();
- ageOrGreatThan.put("age",orGreatThan);
- DBObjectrankOrAll=newBasicDBObject();
- rankOrAll.put("rank",orRankAll);
- DBObjectorOperation=newBasicDBObject();
- orOperation.put("$or",newObject[]{ageOrGreatThan,rankOrAll});
- DBCursororResult=collection.find(orOperation);
- printData("age>3orrankinall(1,1)的记录为:",orResult);
- //notor操作
- DBObjectnotOrOperation=newBasicDBObject();
- notOrOperation.put("$nor",newObject[]{ageOrGreatThan,rankOrAll});
- DBCursornotOrResult=collection.find(notOrOperation);
- printData("not(age>3orrankinall(1,1))的记录为:",notOrResult);
- //size操作
- DBObjectsize=newBasicDBObject("$size",3);
- DBObjectrankSize=newBasicDBObject();
- rankSize.put("rank",size);
- DBCursorsizeResult=collection.find(rankSize);
- printData("rank数组大小为3的记录为:",sizeResult);
- //exists操作
- DBObjectexists=newBasicDBObject("$exists",false);
- DBObjectuserNameExists=newBasicDBObject();
- userNameExists.put("userName",exists);
- DBCursoruserNameExistsResult=collection.find(userNameExists);
- printData("userNameexistsfalse的记录为:",userNameExistsResult);
- //mod取模操作
- DBObjectmodArray=newBasicDBObject("$mod",newObject[]{2,0});
- DBObjectageMod=newBasicDBObject();
- ageMod.put("age",modArray);
- DBCursorageModResult=collection.find(ageMod);
- printData("age%2==0的记录为:",ageModResult);
- }
- /**
- *打印结果数据
- *@paramdescription 结果数据相关描述
- *@paramrecordResult 结果集
- */
- privatestaticvoidprintData(Stringdescription,DBCursorrecordResult){
- System.out.println(description);
- for(Iterator<DBObject>iter=recordResult.iterator();iter.hasNext();){
- System.out.println(iter.next());
- }
- }
- /**
- *@paramargs
- */
- publicstaticvoidmain(String[]args){
- queryData(myCollection);
- }
- }