MongoDB 组合多个条件查询($and、$in、$gte、$lte)

时间:2021-04-28 22:26:30

一,问题描述

数据格式: id, timeStamp,count

条件1:查询 某个时间段 内的数据: timeStamp BETWEEN startTime AND endTime。比如 timeStamp BETWEEN 1499875200  AND 1499875600

条件2:记录 的 id 字段 属于某集合: id IN (1001,1002,1003)

条件3:记录 的count字段 大于某个阈值,比如: count > 10000

 

二,代码实现

条件1实现如下, $gte (greater equal)表示“大于等于 ”。【$lte(lower equal)】表示“小于等于”

    private DBObject timeCondi(long startTimeStamp, long endTimeStamp){
DBObject queryCondition
= new BasicDBObject("$gte", startTimeStamp).append("$lte", endTimeStamp);
BasicDBObject query
= new BasicDBObject("timeStamp", queryCondition);
return query;
}

 

条件2的实现如下,使用 $in ArrayList<Integer> 来表示 id IN (1001,1002,1003)

    private DBObject inCondi() {
List
<Integer> idList = new ArrayList<Integer>();
idList.add(
1001);
idList.add(
1002);
idList.add(
1003);

BasicDBObject inQuery
= new BasicDBObject();
inQuery.put(
"id", new BasicDBObject("$in", idList));
return inQuery;
}

 

组合条件1 和 条件2 查询:(条件1 AND 条件2).List 将所有 AND 组合的条件add进去,然后使用 $and 组合。

    private DBObject andQuery(long startTimeStamp, long endTimeStamp) {
DBObject timeCondi
= timeCondi(startTimeStamp, endTimeStamp);
DBObject inCondi
= inCondi();

List
<DBObject> andCondi = new ArrayList<DBObject>();
andCondi.add(timeCondi);
//组合 条件1
andCondi.add(inCondi);//组合 条件2

BasicDBObject andQuery
= new BasicDBObject();
andQuery.put(
"$and", andCondi);
return andQuery;
}

 

条件3:记录 的count字段 大于某个阈值,比如: count > 10000

    private DBObject countCondi(int size) {
DBObject queryCondition
= new BasicDBObject("$gte", size);
BasicDBObject query
= new BasicDBObject("count", queryCondition);
return query;
}

 

WINDOWS下安装好MongoDB后,MongoDB采用Clietn--Server 模式。WIN10下启动MongoDB服务端:-dbpath 指定 数据存储目录(可自己指定一个)

D:\Program Files\MongoDB\Server\3.4\bin>.\mongod.exe -dbpath ..\data

 

另起一个 Cmd命令行,输入:

D:\Program Files\MongoDB\Server\3.4\bin>.\mongo.exe

就可以以Shell方式操作MongoDB了。

MongoDB 组合多个条件查询($and、$in、$gte、$lte)

输入 exit 退出

 

D:\Program Files\MongoDB\Server\3.4\bin>netstat -ano | findstr 27017  查看端口是否开启

 

 

另外,推荐一个MongoDB的可视化工具:RoboMongoDB。执行相应的查询语句如下:

MongoDB 组合多个条件查询($and、$in、$gte、$lte)

 

 

三:参考文献

https://www.mkyong.com/mongodb/java-mongodb-query-document/

 

原文:http://www.cnblogs.com/hapjin/p/7450309.html