直接上代码(依赖代码请查看之前的博客):
[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
数据库数据如下所示: