MongoDb多条件查询

要求

使用多条件查询

遇到的问题

1, 如何比较数字
2, 下一级怎么比较
浪费了半天的时间

代码展示

    @Autowired
    private MongoTemplate mongoTemplate;

private Criteria createSearchCriteria(Map<String, Object>parameterMap)
    {
        Criteria criteria = new Criteria();
        if (parameterMap.containsKey("tag_name"))
        {
            criteria.and("tag_list.tag_name").is(parameterMap.get("tag_name"));
        }
        if (parameterMap.containsKey("leads_level"))
        {
            long leads_level = Integer.parseInt(parameterMap.get("leads_level").toString());//str_leads_level;
            criteria.and("leads_level").is(leads_level);
        }
        if (parameterMap.containsKey("action_type")){
            long action_type = Integer.parseInt(parameterMap.get("action_type").toString());
            criteria.and("action_type").is(action_type);
        }
        //时间这里是从开始
        if (parameterMap.containsKey("start_time")){
            long start_time = Integer.parseInt(parameterMap.get("start_time").toString());
//            criteria.and("start_time").is(start_time);
            //这个地方有大于必须有小于不然会报错,报类型转换失败的错误
            criteria.and("start_time").gte(start_time).lte( Calendar.getInstance().getTimeInMillis());
        }

        return criteria;
    }

    public PageModel searchCustomer(Map<String, Object>parameterMap, int cursor, int perPageCount){

        PageModel pageModel = new PageModel();
        Query query = new Query();
        Criteria criteria = createSearchCriteria(parameterMap);
        query.addCriteria(criteria);
        Pageable pageable = PageRequest.of(cursor,perPageCount);// new PageRequest(cursor,perPageCount);(过时的写法)
        List<TiktokCustomerDetail> tiktokCustomerDetailList = mongoTemplate.find(query.with(pageable),TiktokCustomerDetail.class,"custom_detail");
        long total = mongoTemplate.count(query,TiktokCustomerDetail.class,"custom_detail");
        pageModel.setCurrent(cursor);
        pageModel.setList(tiktokCustomerDetailList);
        pageModel.setSize(perPageCount);
        double t_totalPageCount = (double) total / perPageCount;
        pageModel.setPages( (int)Math.ceil(t_totalPageCount) );//总页数
        pageModel.setTotal((int)total);
        return pageModel;
    }

PageModel 的结构

@Data
public class PageModel<T> {
    //总数据条数
    private int total;
    //当页条数
    private int size;
    //当前页
    private int current;
    //总页数
    private int pages;
    //当前页数据
    private List<T> list;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值