java操作mongodb(高级查询)

9 篇文章 1 订阅
7 篇文章 11 订阅

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

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

数据库数据如下所示:


 

  • 6
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值