MongoTemplate查询

@Resource
private MongoTemplate mongoTemplate;

public <T> List<T> getDataList(String param1, Long param2, Class<T> clazz) {
    // 构建query
    Query query = constructQuery(param1, param2);
    // 查询
    return mongoTemplate.find(query, clazz);
}

关系且

构建 Query

private Query constructQuery(String param1, String param2, String param3) {
    Query query = new Query();
    if(!Strings.isBlank(param1)){
        query.addCriteria(Criteria.where("field1").is(param1));
    }
    if(!Strings.isBlank(param2)){
        query.addCriteria(Criteria.where("field2").is(param2));
    }
    if(!Strings.isBlank(param3)){
        query.addCriteria(Criteria.where("field3").is(param3));
    }
    return query;
}

关系或

构建 Query

将所有的查询条件添加到一个 List 中,然后将其转换为一个数组,并将数组传递给 Criteria.orOperator 方法。这样,所有的查询条件将被组合成一个或条件

private Query constructQuery(String param1, String param2, String param3) {
        List<Criteria> criteriaList = new ArrayList<>();
        if(!Strings.isBlank(param1)){
            criteriaList.add(Criteria.where("field1").is(param1));
        }
        if(!Strings.isBlank(param2)){
            criteriaList.add(Criteria.where("field2").is(param2));
        }
        if(!Strings.isBlank(param3)){
            criteriaList.add(Criteria.where("field3").is(param3));
        }
        
        Criteria[] criteriaArray = new Criteria[criteriaList.size()];
        criteriaList.toArray(criteriaArray);
        
        Criteria orCriteria = new Criteria().orOperator(criteriaArray);
        Query query = new Query(orCriteria);
        return query;
    }
    
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐