mongoTemplate封装多个or查询条件

547 阅读1分钟

``

mongoTemplate实现多个or查询条件封装

    //内容更新 2022/05/06 or查询 (此记录仅供作者参考)
    String[] laneNumOutArray = lane_num_out.split(",");
    
    //此查询对象放 or查询条件的列表
    Criteria craLaneNumOut = new Criteria();
    
    //or查询条件列表
    List<Criteria> craLanNumOutList = new ArrayList<>();
    for (String lanNumOut : laneNumOutArray) {
        if(StringUtils.isEmpty(lanNumOut)){
            continue;
        }

        //多值匹配 ;num; ;num ^num; num  匹配四种情况
        String pattern = buildMultiPatternRegularStr(lanNumOut, ",");
        
        //添加当前查询条件
        craLanNumOutList.add(Criteria.where("lane_num_out").regex(pattern));
    }
    if(!CollectionUtils.isEmpty(craLanNumOutList)){
    
    //封装or查询列表
        craLaneNumOut.orOperator(craLanNumOutList.toArray(new Criteria[craLanNumOutList.size()]));
        
        //将or查询列表封装到总查询对象中
        query.addCriteria(craLaneNumOut);
    }