项目大部分数据存储在mongoDB中,在需求中,须要根据数据建立的时间段做为条件进行查询; 所以写了个查询条件以下:mongodb
if (null != startTime) { criteria.and("createTime").gte(startTime); } if (null != endTime) { criteria.and("createTime").lte(endTime); }
而后测试,传入参数查询,报错:express
{"timestamp":"2018-12-28T10:58:43.199+0000","status":500,"error":"Internal Server Error","message":"Due to limitations of the com.mongodb.BasicDocument, you can't add a second 'createTime' expression specified as 'createTime ;测试
看代码,调试了好久没找到缘由,后来百度才知道这种在mongo里的正确写法:调试
if (null != startTime && null == endTime) { criteria.andOperator( Criteria.where("createTime").gte(startTime) ); }else if (null == startTime && null != endTime) { criteria.andOperator( Criteria.where("createTime").lte(endTime) ); }else if ( null != endTime && null != startTime){ if(endTime.equals(startTime)) { endTime = DateUtils.getEndDate(endTime); } criteria.andOperator( Criteria.where("createTime").gte(startTime), Criteria.where("createTime").lte(endTime) ); }