转载自:http://blog.csdn.net/maosijunzi/article/details/42100535
直接上代码(依赖代码请查看之前的博客):
- 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类源码:
- // 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";
- }
输出结果:
- ================(查询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
数据库数据如下所示: