博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot~mogodb多条件拼接
阅读量:6885 次
发布时间:2019-06-27

本文共 1354 字,大约阅读时间需要 4 分钟。

起因

当前我们使用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
getClients(List
codeAccountPeriods) { List
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
fields = new ArrayList
( Arrays.asList("accountPeriod", "code", "client", "taxProperty", "version")); for (String name : fields) { query.fields().include(name); } List
clients = mongoTemplate.find(query, x);return clients;

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

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

你可能感兴趣的文章
the way of reading English books
查看>>
文本超出部分省略(包括多行文本超出部分省略显示)
查看>>
MongoDB数据库索引
查看>>
jq 操作表单中 checkbox 全选 单选
查看>>
高并发和大流量解决方案@year12
查看>>
模板:排序(三)
查看>>
jsp页面动态展示list-使用<select>和<c:forEach>标签
查看>>
html 样式之style属性的使用
查看>>
Linux 中显示所有正在运行的进程
查看>>
POJ 1753 Flip Game
查看>>
Vc控件用法总结之List Control
查看>>
[转] 【开源访谈】Muduo 作者陈硕访谈实录
查看>>
LeetCode 86. Partition List 20170612
查看>>
我的XHTML学习笔记
查看>>
单链表的增删查改
查看>>
centos7系统安装python3,pip3,django
查看>>
php观察者模式
查看>>
励志名言
查看>>
Linux基本命令 文件搜索命令
查看>>
C#点击按钮用DataGridView动态增加行、删除行,增加按钮列
查看>>