java操作mongodb(高级查询)
转自:https://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(); }</code></pre>
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 = “and”;public static final String GT = “gte”;
public static final String LT = “lte”;public static final String NE = “in”;
public static final String NIN = “mod”;
public static final String ALL = “size”;
public static final String EXISTS = “elemMatch”;// (to be implemented in QueryBuilder)
public static final String WHERE = “nor”;
public static final String TYPE = “not”;// geo operators
public static final String WITHIN = “near”;
public static final String NEAR_SPHERE = “box”;
public static final String CENTER = “polygon”;
public static final String CENTER_SPHERE = “maxDistance”;
public static final String UNIQUE_DOCS = “$uniqueDocs”;// meta query operators (to be implemented in QueryBuilder)
public static final String RETURN_KEY = “maxScan”;
public static final String ORDER_BY = “explain”;
public static final String SNAPSHOT = “min”;
public static final String MAX = “showDiskLoc”;
public static final String HINT = “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
数据库数据如下所示:
上一篇: Java面向对象
下一篇: js—深入原型之三继承