mongodb系列之四:java高级查询

转载自:http://blog.csdn.net/maosijunzi/article/details/42100535

直接上代码(依赖代码请查看之前的博客):

[java]  view plain copy print ?
  1. public void query() {  
  2.         // $or (查询id等于1或者id等于2的数据)  
  3.         BasicDBObject queryObject = new BasicDBObject().append(  
  4.                 QueryOperators.OR,  
  5.                 new BasicDBObject[] { new BasicDBObject("id"1),  
  6.                         new BasicDBObject("id"2) });  
  7.         find(queryObject, "(查询id等于1或者id等于2的数据)");  
  8.   
  9.         // $and(查询id等于10并且name等于10的数据)  
  10.         queryObject = new BasicDBObject().append(QueryOperators.AND,  
  11.                 new BasicDBObject[] { new BasicDBObject("id"10),  
  12.                         new BasicDBObject("name""10") });  
  13.         find(queryObject, "(查询id等于10并且name等于10的数据)");  
  14.   
  15.         // $gt(查询id大于10的数据)  
  16.         queryObject = new BasicDBObject().append("id",  
  17.                 new BasicDBObject().append(QueryOperators.GT, 10));  
  18.         find(queryObject, "(查询id大于10的数据)");  
  19.         // $gte (查询id大于等于10的数据)  
  20.         queryObject = new BasicDBObject().append("id",  
  21.                 new BasicDBObject().append(QueryOperators.GTE, 11));  
  22.         find(queryObject, "(查询id大于等于11的数据)");  
  23.         // $lt  
  24.         queryObject = new BasicDBObject().append("id",  
  25.                 new BasicDBObject().append(QueryOperators.LT, 2));  
  26.         find(queryObject, "(查询id小于2的数据)");  
  27.         // $lte  
  28.         queryObject = new BasicDBObject().append("id",  
  29.                 new BasicDBObject().append(QueryOperators.LTE, 2));  
  30.         find(queryObject, "(查询id小于等于2的数据)");  
  31.   
  32.         // $in  
  33.         queryObject = new BasicDBObject().append("id"new BasicDBObject(  
  34.                 QueryOperators.IN, new int[] { 12 }));  
  35.         find(queryObject, "(查询id为1和2的数据)");  
  36.         // $nin  
  37.         queryObject = new BasicDBObject().append("id"new BasicDBObject(  
  38.                 QueryOperators.NIN, new int[] { 123456789 }));  
  39.         find(queryObject, "(查询id不为1,2,3,4,5,6,7,8,9的数据)");  
  40.   
  41.         // 还有很多其他的高级查询方式可以参见QueryOperators类  
  42.     }  
  43.   
  44.     public void find(BasicDBObject condition, String str) {  
  45.         System.out.println("================" + str + "==================");  
  46.         DB db = MongoManager.getDB(Constants.DB);  
  47.         DBCollection collection = db.getCollection(Constants.COLLECTION_USER);  
  48.         DBCursor find = collection.find(condition);  
  49.         while (find.hasNext()) {  
  50.             User user = new User();  
  51.             user.parse(find.next());  
  52.             System.out.println(user);  
  53.         }  
  54.   
  55.     }  
  56.   
  57.     public static void main(String[] args) {  
  58.         UserDao userDao = new UserDao();  
  59.         userDao.query();  
  60.     }  


QueryOperators类源码:

[java]  view plain copy print ?
  1. // QueryOperators.java  
  2.   
  3. /** 
  4.  *      Copyright (C) 2010 10gen Inc. 
  5.  * 
  6.  *   Licensed under the Apache License, Version 2.0 (the "License"); 
  7.  *   you may not use this file except in compliance with the License. 
  8.  *   You may obtain a copy of the License at 
  9.  * 
  10.  *      http://www.apache.org/licenses/LICENSE-2.0 
  11.  * 
  12.  *   Unless required by applicable law or agreed to in writing, software 
  13.  *   distributed under the License is distributed on an "AS IS" BASIS, 
  14.  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
  15.  *   See the License for the specific language governing permissions and 
  16.  *   limitations under the License. 
  17.  */  
  18. package com.mongodb;  
  19.   
  20. /** 
  21.  * MongoDB keywords for various query operations 
  22.  * 
  23.  * @author Julson Lim 
  24.  */  
  25. public class QueryOperators {  
  26.     public static final String OR = "$or";  
  27.     public static final String AND = "$and";  
  28.   
  29.     public static final String GT = "$gt";  
  30.     public static final String GTE = "$gte";  
  31.     public static final String LT = "$lt";  
  32.     public static final String LTE = "$lte";  
  33.   
  34.     public static final String NE = "$ne";  
  35.     public static final String IN = "$in";  
  36.     public static final String NIN = "$nin";  
  37.     public static final String MOD = "$mod";  
  38.     public static final String ALL = "$all";  
  39.     public static final String SIZE = "$size";  
  40.     public static final String EXISTS = "$exists";  
  41.     public static final String ELEM_MATCH = "$elemMatch";  
  42.   
  43.     // (to be implemented in QueryBuilder)  
  44.     public static final String WHERE = "$where";  
  45.     public static final String NOR = "$nor";  
  46.     public static final String TYPE = "$type";  
  47.     public static final String NOT = "$not";  
  48.   
  49.     // geo operators  
  50.     public static final String WITHIN = "$within";  
  51.     public static final String NEAR = "$near";  
  52.     public static final String NEAR_SPHERE = "$nearSphere";  
  53.     public static final String BOX = "$box";  
  54.     public static final String CENTER = "$center";  
  55.     public static final String POLYGON = "$polygon";  
  56.     public static final String CENTER_SPHERE = "$centerSphere";  
  57.     // (to be implemented in QueryBuilder)  
  58.     public static final String MAX_DISTANCE = "$maxDistance";  
  59.     public static final String UNIQUE_DOCS = "$uniqueDocs";  
  60.   
  61.   
  62.     // meta query operators (to be implemented in QueryBuilder)  
  63.     public static final String RETURN_KEY = "$returnKey";  
  64.     public static final String MAX_SCAN = "$maxScan";  
  65.     public static final String ORDER_BY = "$orderby";  
  66.     public static final String EXPLAIN =  "$explain";  
  67.     public static final String SNAPSHOT = "$snapshot";  
  68.     public static final String MIN = "$min";  
  69.     public static final String MAX = "$max";  
  70.     public static final String SHOW_DISK_LOC = "$showDiskLoc";  
  71.     public static final String HINT = "$hint";  
  72.     public static final String COMMENT = "$comment";  
  73. }  


 

输出结果:

[plain]  view plain copy print ?
  1. ================(查询id等于1或者id等于2的数据)==================  
  2. id:1,name:jinhui,address:beijing  
  3. id:2,name:manman,address:beijing  
  4. ================(查询id等于10并且name等于10的数据)==================  
  5. ================(查询id大于10的数据)==================  
  6. id:11,name:11,address:11  
  7. id:12,name:12,address:12  
  8. ================(查询id大于等于11的数据)==================  
  9. id:11,name:11,address:11  
  10. id:12,name:12,address:12  
  11. ================(查询id小于2的数据)==================  
  12. id:1,name:jinhui,address:beijing  
  13. ================(查询id小于等于2的数据)==================  
  14. id:1,name:jinhui,address:beijing  
  15. id:2,name:manman,address:beijing  
  16. ================(查询id为1和2的数据)==================  
  17. id:1,name:jinhui,address:beijing  
  18. id:2,name:manman,address:beijing  
  19. ================(查询id不为1,2,3,4,5,6,7,8,9的数据)==================  
  20. id:11,name:11,address:11  
  21. id:12,name:12,address:12  

数据库数据如下所示:

你可能感兴趣的:(mongoDB)