$match匹配查询踩坑
用下面这个就是王者答案
//时间范围
if(StringUtils.isNotBlank(startTime)&&StringUtils.isNotBlank(endTime)){
Date DateStartTime = new SimpleDateFormat("yyyy-MM-dd").parse(startTime);
Date DateEndTime= new SimpleDateFormat("yyyy-MM-dd").parse(endTime);
BasicDBObject times = new BasicDBObject("$gt", DateStartTime);
times.put("$lt",DateEndTime);
matchQuery.put("beginDate", times);
System.out.println(matchQuery.toJson());
}
BasicDBObject 会自动识别Date类型:这样解决两个问题了
1.时间差问题(比如我们前端使用是北京时间,与mongdb的utc时间相差8小时)总不可能你按北京时间的这个点来查utc的时间的这个点,这样的数据虽然查到了,但是绝对有问题
2.北京时间需要转化成utc格式的问题: BasicObject自动把Data转化成mongdb的函数$Date (mongdb函数自动把date转化成utc)
“endD