起因
當前我們使用mongodb進行查詢時,有時我們的條件是分塊生成的,它可能來自一個列表里,我們的條件需要根據列表去返回數據,這里有個問題,如果遍歷列表,然后每次都去從mongodb里查詢數據 ,這種性能顯然是不好的,我們需要把條件進行拼接,一次把數據查詢出來!
分析
使用criteria這個對象去構建查詢條件,使用oroperator來組合多個criteria實例,最終將列表里所有條件拼接出來,從返回查詢一次即可返回全部數據 。
1
|
criteria[] criterias = criterialist.toarray( new criteria[criterialist.size()]); criteria criteria = new criteria(); criteria.oroperator(criterias); query query = query.query(criteria); |
實現
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
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多條件拼接的解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!
原文鏈接:http://www.cnblogs.com/lori/p/9488979.html