您的位置:首页 > 其它

you can’t add a second ‘$and’

2016-01-24 21:00 316 查看
出现这样的错,说明你的程序在生成mongo语句的时候出现了两个and操作,那么这样的问题怎么解决呢!

List<Criteria> criteriaList = MongoUtils.buildCriteriaList(map);
Date startDate =null;
Date endDate =null;
if(followAnalizeQuery.getUrgeStartDate()!=null&&followAnalizeQuery.getUrgeEndDate()!=null){
startDate = DateUtil.parseDate(DateUtil.formatDate(followAnalizeQuery.getUrgeStartDate()));
endDate = DateUtil.parseDate(DateUtil.formatDate(followAnalizeQuery.getUrgeEndDate()));
Long time = endDate.getTime()+ONE_DAY;
endDate = new Date(time);
criteriaList.add(Criteria.where(URGE_TIME).gte(startDate).lt(endDate));
}else if(followAnalizeQuery.getUrgeStartDate()!=null){
startDate = DateUtil.parseDate(DateUtil.formatDate(followAnalizeQuery.getUrgeStartDate()));
criteriaList.add(Criteria.where(URGE_TIME).gte(startDate));
}else if(followAnalizeQuery.getUrgeEndDate()!=null){
endDate = DateUtil.parseDate(DateUtil.formatDate(followAnalizeQuery.getUrgeEndDate()));
Long time = endDate.getTime()+ONE_DAY;
endDate = new Date(time);
criteriaList.add(Criteria.where(URGE_TIME).lt(endDate));
}
String collectionName = mongoTemplate.getCollectionName(UrgeRecord.class);
GroupBy groupBy = GroupBy.keyFunction(followAnalizePageKeyFunction);
groupBy.initialDocument(followAnalizePageInitial);
groupBy.reduceFunction(getMongoSQL(connectStatus,unConnectStatus));
GroupByResults<FollowAnalize> groupResult=mongoTemplate.group(new Criteria().andOperator(criteriaList.toArray(new Criteria[criteriaList.size()])), collectionName, groupBy, FollowAnalize.class);

上面的代码是我重新改装后的,大意是将所有的And操作都放在List<Criteria>中,最后用new Criteria().andOperator(criteriaList.toArray(new Criteria[criteriaList.size()])将所有的and操作用一个and来完成,这样生成的语句中就只有一个and;

这样的问题我在本地也没有出现,但是在linux环境下就会出现
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  and