spring boot 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);
實現(xiàn)
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;
有時解決問題的方法可以有多種,我們需要從另一個方面去考慮它。
總結
以上所述是小編給大家介紹的spring boot mogodb多條件拼接的解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
相關文章
使用mybatis報Invalid bound statement解決分析
這篇文章主要為大家介紹了使用mybatis報Invalid bound statement原因解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12詳解SpringMVC中的@RequestMapping注解
這篇文章主要介紹了SpringMVC中@RequestMapping注解,@RequestMapping注解是一個用來處理請求地址映射的注解,可用于映射一個請求或一個方法,可以用在類或方法上,需要的朋友可以參考下2023-07-07解決springboot遇到autowire注入為null的問題
這篇文章主要介紹了解決springboot遇到autowire注入為null的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03IDEA2022搭建Spring?Cloud多模塊項目的詳細過程
這篇文章主要介紹了IDEA2022搭建Spring?Cloud多模塊項目,網上有很多教程父模塊都是通過maven的方式創(chuàng)建的,然后子模塊是通過Spring?Initalizr方式創(chuàng)建,這種方式父模塊無法管理子模塊的依賴仲裁,需要每個子模塊自行管理,就失去了父模塊的用處了2022-10-10