you can’t add a second ‘$and’

出现这样的错,说明你的程序在生成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环境下就会出现

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周凡首

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值