springboot~mogodb多条件拼接

springboot~mogodb多条件拼接

起因

当前我们使用mongodb进行查询时,有时我们的条件是分块生成的,它可能来自一个列表里,我们的条件需要根据列表去返回数据,这里有个问题,如果遍历列表,然后每次都去从mongodb里查询数据 ,这种性能显然是不好的,我们需要把条件进行拼接,一次把数据查询出来!

分析

使用Criteria这个对象去构建查询条件,使用orOperator来组合多个Criteria实例,最终将列表里所有条件拼接出来,从返回查询一次即可返回全部数据 。

Criteria[] criterias = criteriaList.toArray(new Criteria[criteriaList.size()]);
Criteria criteria = new Criteria();
criteria.orOperator(criterias);
Query query = Query.query(criteria);

实现

private List<x> getClients(List<CodeAccountPeriod> codeAccountPeriods) {
  List<Criteria> criteriaList = new ArrayList<>();
    for (CodeAccountPeriod codeAccountPeriod : codeAccountPeriods) {
      criteriaList.add(where("accountPeriod").is(codeAccountPeriod.getAccountPeriod())
          .and("code").is(codeAccountPeriod.getCode())
      );
    }
    Criteria[] criterias = criteriaList.toArray(new Criteria[criteriaList.size()]);
    Criteria criteria = new Criteria();
    criteria.orOperator(criterias);
    Query query = Query.query(criteria);
    List<String> fields = new ArrayList<String>(
        Arrays.asList("accountPeriod", "code", "client", "taxProperty", "version"));
    for (String name : fields) {
      query.fields().include(name);
    }
    List<x> clients = mongoTemplate.find(query, x);
return clients;

有时解决问题的方法可以有多种,我们需要从另一个方面去考虑它。

转载于:https://www.cnblogs.com/lori/p/9488979.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101483.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • js中数组的splice方法_vue中splice方法

    js中数组的splice方法_vue中splice方法JavaScript中的splice主要用来对js中的数组进行操作,包括删除,添加,替换等。1.删除-用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数) 2.插入-向数组指定位置插入任意项元素。三个参数,第一个参数(插入位置),第二个参数(0),第三个参数(插入的项) 3.替换-向数组指定位置插入任意项元素,同时删除任意数量的项,三个参数。第一个参数(

    2022年9月25日
    1
  • 简单图文解释冯诺依曼体系结构(通俗易懂版)

    简单图文解释冯诺依曼体系结构(通俗易懂版)冯诺依曼式计算机主要由输入设备,输出设备,控制器,运算器,存储器该五个组成部分构成。我们可以将该体系结构的运作通过人类接收信息,处理信息,并输出信息这个过程来加以类比理解。人类:当眼睛看到某些信息,这些信息被存储到记忆装置,大脑从记忆装置取出信息,并加以思考运算,再放回记忆装置,大脑控制记忆装置将信息传输给嘴巴,将信息表达出来。(这个过程大脑的指令占领导地位)冯诺依曼计算机:当输入设备接收到数据,数据将被存储到存储器,控制器发出取数据和运算的指令,数据被取出方去放入运算器中加以运算,运算结束后,控制器

    2025年6月11日
    5
  • 二进制减法计算,负数原码、反码和补码之间的关系

    二进制减法计算,负数原码、反码和补码之间的关系二进制减法类似于十进制的减法,我们从十进制的减法来推出二进制减法如何进行运算。二进制计算例如101001-011010=001111(41-26=15)的运算。灰色部分为计算过程,绿色字为被减一得到的数,红色字为借一后得到的数。在运算过程中,从右往左逐位进行计算。1-0=1; 0不够减1,向前借一后加2变成2;2-1=1; 0在上一步被借一所以减为-1,-1不够减…

    2022年9月24日
    3
  • werkzeug 详解

    werkzeug 详解首先,先向大家介绍一下什么是werkzeug,Werkzeug是一个WSGI工具包,他可以作为一个Web框架的底层库。这里稍微说一下,werkzeug不是一个web服务器,也不是一个web框架,而是一个工具包,官方的介绍说是一个WSGI工具包,它可以作为一个Web框架的底层库,因为它封装好了很多Web框架的东西,例如Request,Response等等。例如我最常用的Fla…

    2022年10月7日
    5
  • “度”思考

    “度”思考

    2022年1月12日
    51
  • DES算法详细设计

    DES算法详细设计一 DES 算法原理概述 DES 算法为密码体制中的对称密码体制 又被称为美国数据加密标准 是 1972 年美国 IBM 公司研制的对称密码体制加密算法 明文按 64 位进行分组 密钥长 64 位 密钥事实上是 56 位参与 DES 运算 第 8 16 24 32 40 48 56 64 位是校验位 使得每个密钥都有奇数个 1 分组后的明文组和 56 位的密钥按位替代或交换的方法形成密文组的加密方法 DES 是一种分组密码 是两

    2025年8月18日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号