java mongodb 高级查询

本文详细介绍了使用MongoDB Java API进行高级查询的方法,包括分页、排序、条件查询等,通过实例展示了如何获取特定数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. /**
  2. *MongoDBTest
  3. *MongoDBJAVAAPI的高级查询示例
  4. */
  5. packagecom.labci.mongodb.test;
  6. importjava.net.UnknownHostException;
  7. importjava.util.Iterator;
  8. importcom.mongodb.BasicDBObject;
  9. importcom.mongodb.DB;
  10. importcom.mongodb.DBCollection;
  11. importcom.mongodb.DBCursor;
  12. importcom.mongodb.DBObject;
  13. importcom.mongodb.Mongo;
  14. importcom.mongodb.MongoException;
  15. /**
  16. *@authorBillTu(tujiyue/iwtxokhtd)
  17. *May21,2011[11:33:34PM]
  18. *
  19. */
  20. publicclassMongoDBAdvancedQuery{
  21. privatestaticfinalStringHOST="192.168.1.86";
  22. privatestaticfinalintPORT=27017;
  23. privatestaticfinalStringUSER="iwtxokhtd";
  24. privatestaticfinalStringPASSWORD="123456";
  25. privatestaticfinalStringDB_NAME="test";
  26. privatestaticfinalStringCOLLECTION="data_test";
  27. privatestaticMongoconn=null;
  28. privatestaticDBmyDB=null;
  29. privatestaticDBCollectionmyCollection=null;
  30. static{
  31. try{
  32. conn=newMongo(HOST,PORT);//建立数据库连接
  33. myDB=conn.getDB(DB_NAME);//使用test数据库
  34. booleanloginSuccess=myDB.authenticate(USER,PASSWORD.toCharArray());//用户验证
  35. if(loginSuccess){
  36. myCollection=myDB.getCollection(COLLECTION);
  37. }
  38. }catch(UnknownHostExceptione){
  39. e.printStackTrace();
  40. }catch(MongoExceptione){
  41. e.printStackTrace();
  42. }
  43. }
  44. /**
  45. *查询数据
  46. *@paramcollection “表”名
  47. */
  48. privatestaticvoidqueryData(DBCollectioncollection){
  49. //count查询
  50. System.out.println("表的总记录数为:");
  51. System.out.println(collection.find().count());
  52. //分页查询
  53. DBCursorfindAll=collection.find();
  54. DBCursorqueryByPage=findAll.skip(3).limit(4);
  55. printData("从第3条记录起取4条记录为:",queryByPage);
  56. //orderby操作
  57. DBObjectorderBy=newBasicDBObject();
  58. orderBy.put("userName",-1);//按userName倒序排
  59. DBCursororderByResult=collection.find().sort(orderBy);
  60. printData("所有记录按userName倒序排为:",orderByResult);
  61. //"!="和">"操作
  62. DBObjectnotEqual=newBasicDBObject();
  63. notEqual.put("$ne","BillTu10");
  64. DBObjectgreatThan=newBasicDBObject();
  65. greatThan.put("$gt",7);
  66. DBObjectnotEqualAndGreatThan=newBasicDBObject();
  67. notEqualAndGreatThan.put("userName",notEqual);
  68. notEqualAndGreatThan.put("age",greatThan);
  69. DBCursornotEqualAndGreatThanResult=collection.find(notEqualAndGreatThan);
  70. printData("userName!='BillTu10'andage>7的记录为:",notEqualAndGreatThanResult);
  71. //">="和"<="操作
  72. DBObjectgreatThanEqualAndLessThanEqual=newBasicDBObject();
  73. greatThanEqualAndLessThanEqual.put("$gte",2);
  74. greatThanEqualAndLessThanEqual.put("$lte",7);
  75. DBObjectageCompare=newBasicDBObject();
  76. ageCompare.put("age",greatThanEqualAndLessThanEqual);
  77. DBCursorcompareResult=collection.find(ageCompare);
  78. printData("age>=2andage<=7的记录为:",compareResult);
  79. //all操作
  80. DBObjectall=newBasicDBObject();
  81. all.put("$all",newObject[]{7,7});
  82. DBObjectrankAll=newBasicDBObject();
  83. rankAll.put("rank",all);
  84. DBCursorrankAllResult=collection.find(rankAll);
  85. printData("rankinall(7,7)的记录为:",rankAllResult);
  86. //notin操作
  87. DBObjectnotIn=newBasicDBObject();
  88. notIn.put("$nin",newObject[]{2,3});
  89. DBObjectageNotIn=newBasicDBObject();
  90. ageNotIn.put("age",notIn);
  91. DBCursorageNotInResult=collection.find(ageNotIn);
  92. printData("agenotin(2,3)的记录为:",ageNotInResult);
  93. //or操作
  94. DBObjectorGreatThan=newBasicDBObject("$gt",3);
  95. DBObjectorRankAll=newBasicDBObject("$all",newObject[]{1,1});
  96. DBObjectageOrGreatThan=newBasicDBObject();
  97. ageOrGreatThan.put("age",orGreatThan);
  98. DBObjectrankOrAll=newBasicDBObject();
  99. rankOrAll.put("rank",orRankAll);
  100. DBObjectorOperation=newBasicDBObject();
  101. orOperation.put("$or",newObject[]{ageOrGreatThan,rankOrAll});
  102. DBCursororResult=collection.find(orOperation);
  103. printData("age>3orrankinall(1,1)的记录为:",orResult);
  104. //notor操作
  105. DBObjectnotOrOperation=newBasicDBObject();
  106. notOrOperation.put("$nor",newObject[]{ageOrGreatThan,rankOrAll});
  107. DBCursornotOrResult=collection.find(notOrOperation);
  108. printData("not(age>3orrankinall(1,1))的记录为:",notOrResult);
  109. //size操作
  110. DBObjectsize=newBasicDBObject("$size",3);
  111. DBObjectrankSize=newBasicDBObject();
  112. rankSize.put("rank",size);
  113. DBCursorsizeResult=collection.find(rankSize);
  114. printData("rank数组大小为3的记录为:",sizeResult);
  115. //exists操作
  116. DBObjectexists=newBasicDBObject("$exists",false);
  117. DBObjectuserNameExists=newBasicDBObject();
  118. userNameExists.put("userName",exists);
  119. DBCursoruserNameExistsResult=collection.find(userNameExists);
  120. printData("userNameexistsfalse的记录为:",userNameExistsResult);
  121. //mod取模操作
  122. DBObjectmodArray=newBasicDBObject("$mod",newObject[]{2,0});
  123. DBObjectageMod=newBasicDBObject();
  124. ageMod.put("age",modArray);
  125. DBCursorageModResult=collection.find(ageMod);
  126. printData("age%2==0的记录为:",ageModResult);
  127. }
  128. /**
  129. *打印结果数据
  130. *@paramdescription 结果数据相关描述
  131. *@paramrecordResult 结果集
  132. */
  133. privatestaticvoidprintData(Stringdescription,DBCursorrecordResult){
  134. System.out.println(description);
  135. for(Iterator<DBObject>iter=recordResult.iterator();iter.hasNext();){
  136. System.out.println(iter.next());
  137. }
  138. }
  139. /**
  140. *@paramargs
  141. */
  142. publicstaticvoidmain(String[]args){
  143. queryData(myCollection);
  144. }
  145. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值