您的位置:首页 > 数据库 > Mongodb

mongodb系列之四:java高级查询

2015-04-12 20:57 411 查看
转载自:http://blog.csdn.net/maosijunzi/article/details/42100535

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

[java] view
plaincopyprint?





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
plaincopyprint?





// 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
plaincopyprint?





================(查询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

数据库数据如下所示:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: