java操作mongodb(高级查询)

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

[java] view plain copy

public void query() {  

// $or (查询id等于1或者id等于2的数据)  

BasicDBObject queryObject =new BasicDBObject().append(  

                QueryOperators.OR,  

new BasicDBObject[] { new BasicDBObject("id", 1),  

new BasicDBObject("id", 2) });  

find(queryObject,"(查询id等于1或者id等于2的数据)");  


// $and(查询id等于10并且name等于10的数据)  

queryObject =new BasicDBObject().append(QueryOperators.AND,  

new BasicDBObject[] { new BasicDBObject("id", 10),  

new BasicDBObject("name", "10") });  

find(queryObject,"(查询id等于10并且name等于10的数据)");  


// $gt(查询id大于10的数据)  

queryObject =new BasicDBObject().append("id",  

new BasicDBObject().append(QueryOperators.GT, 10));  

find(queryObject,"(查询id大于10的数据)");  

// $gte (查询id大于等于10的数据)  

queryObject =new BasicDBObject().append("id",  

new BasicDBObject().append(QueryOperators.GTE, 11));  

find(queryObject,"(查询id大于等于11的数据)");  

// $lt  

queryObject =new BasicDBObject().append("id",  

new BasicDBObject().append(QueryOperators.LT, 2));  

find(queryObject,"(查询id小于2的数据)");  

// $lte  

queryObject =new BasicDBObject().append("id",  

new BasicDBObject().append(QueryOperators.LTE, 2));  

find(queryObject,"(查询id小于等于2的数据)");  


// $in  

queryObject =new BasicDBObject().append("id", new BasicDBObject(  

QueryOperators.IN,new int[] { 1, 2 }));  

find(queryObject,"(查询id为1和2的数据)");  

// $nin  

queryObject =new BasicDBObject().append("id", new BasicDBObject(  

QueryOperators.NIN,new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }));  

find(queryObject,"(查询id不为1,2,3,4,5,6,7,8,9的数据)");  


// 还有很多其他的高级查询方式可以参见QueryOperators类  

    }  


public void find(BasicDBObject condition, String str) {  

System.out.println("================" + str + "==================");  

        DB db = MongoManager.getDB(Constants.DB);  

        DBCollection collection = db.getCollection(Constants.COLLECTION_USER);  

        DBCursor find = collection.find(condition);  

while (find.hasNext()) {  

User user =new User();  

            user.parse(find.next());  

            System.out.println(user);  

        }  


    }  


public static void main(String[] args) {  

UserDao userDao =new UserDao();  

        userDao.query();  

    }  

QueryOperators类源码:

[java] view plain copy

// QueryOperators.java  


/**

 *      Copyright (C) 2010 10gen Inc.

 *

 *   Licensed under the Apache License, Version 2.0 (the "License");

 *   you may not use this file except in compliance with the License.

 *   You may obtain a copy of the License at

 *

 *      http://www.apache.org/licenses/LICENSE-2.0

 *

 *   Unless required by applicable law or agreed to in writing, software

 *   distributed under the License is distributed on an "AS IS" BASIS,

 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 *   See the License for the specific language governing permissions and

 *   limitations under the License.

 */  

package com.mongodb;  


/**

 * MongoDB keywords for various query operations

 *

 * @author Julson Lim

 */  

public class QueryOperators {  

public static final String OR = "$or";  

public static final String AND = "$and";  


public static final String GT = "$gt";  

public static final String GTE = "$gte";  

public static final String LT = "$lt";  

public static final String LTE = "$lte";  


public static final String NE = "$ne";  

public static final String IN = "$in";  

public static final String NIN = "$nin";  

public static final String MOD = "$mod";  

public static final String ALL = "$all";  

public static final String SIZE = "$size";  

public static final String EXISTS = "$exists";  

public static final String ELEM_MATCH = "$elemMatch";  


// (to be implemented in QueryBuilder)  

public static final String WHERE = "$where";  

public static final String NOR = "$nor";  

public static final String TYPE = "$type";  

public static final String NOT = "$not";  


// geo operators  

public static final String WITHIN = "$within";  

public static final String NEAR = "$near";  

public static final String NEAR_SPHERE = "$nearSphere";  

public static final String BOX = "$box";  

public static final String CENTER = "$center";  

public static final String POLYGON = "$polygon";  

public static final String CENTER_SPHERE = "$centerSphere";  

// (to be implemented in QueryBuilder)  

public static final String MAX_DISTANCE = "$maxDistance";  

public static final String UNIQUE_DOCS = "$uniqueDocs";  



// meta query operators (to be implemented in QueryBuilder)  

public static final String RETURN_KEY = "$returnKey";  

public static final String MAX_SCAN = "$maxScan";  

public static final String ORDER_BY = "$orderby";  

public static final String EXPLAIN =  "$explain";  

public static final String SNAPSHOT = "$snapshot";  

public static final String MIN = "$min";  

public static final String MAX = "$max";  

public static final String SHOW_DISK_LOC = "$showDiskLoc";  

public static final String HINT = "$hint";  

public static final String COMMENT = "$comment";  

}  

输出结果:

[plain] view plain copy

================(查询id等于1或者id等于2的数据)==================  

id:1,name:jinhui,address:beijing  

id:2,name:manman,address:beijing  

================(查询id等于10并且name等于10的数据)==================  

================(查询id大于10的数据)==================  

id:11,name:11,address:11  

id:12,name:12,address:12  

================(查询id大于等于11的数据)==================  

id:11,name:11,address:11  

id:12,name:12,address:12  

================(查询id小于2的数据)==================  

id:1,name:jinhui,address:beijing  

================(查询id小于等于2的数据)==================  

id:1,name:jinhui,address:beijing  

id:2,name:manman,address:beijing  

================(查询id为1和2的数据)==================  

id:1,name:jinhui,address:beijing  

id:2,name:manman,address:beijing  

================(查询id不为1,2,3,4,5,6,7,8,9的数据)==================  

id:11,name:11,address:11  

id:12,name:12,address:12  

数据库数据如下所示:

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,281评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,805评论 19 139
  • 一. Java基础部分.................................................
    wy_sure阅读 9,281评论 0 11
  • 小情思,噘嘴的时候,就是秋天的诗意转台了。 一眼笑意,半句闲语,随着秋的薄凉也笼上了云烟。 缘之天,份之地。天地合...
    爱上一叶浮萍阅读 3,677评论 16 25
  • 养育孩子果真会看到自己并想重塑自己 五一三天,基本上都在家待着,看着热热的天,哪也不想去,发现自己真的是没有激情了...
    飞飞来啦阅读 3,150评论 0 0

友情链接更多精彩内容