本文實例為大家分享了Java操作MongoDB模糊查詢和分頁查詢,供大家參考,具體內容如下
模糊查詢條件:
1、完全匹配
Pattern pattern = Pattern.compile("^name$", Pattern.CASE_INSENSITIVE);
2、右匹配
Pattern pattern = Pattern.compile("^.*name$", Pattern.CASE_INSENSITIVE);
3、左匹配
Pattern pattern = Pattern.compile("^name.*$", Pattern.CASE_INSENSITIVE);
4、模糊匹配
Pattern pattern = Pattern.compile("^.*name8.*$", Pattern.CASE_INSENSITIVE);
記錄總數查詢:
count(),返回查詢總數。
查詢記錄排序:
BasicDBObject sort = new BasicDBObject();
sort.put("name",1);
1、表示正序;-1.表示倒序
分頁查詢:
skip(),跳過多少條記錄
limit(),返回多少條記錄
代碼實例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
package com.what21.mongodb.demo; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.regex.Pattern; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.MongoClient; import com.mongodb.MongoClientOptions; import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; public class OperateDemo2 { /** * @return * @throws Exception */ public static MongoClient getMongoClient() throws Exception{ try { //===================================================// List<ServerAddress> serverList = new ArrayList<ServerAddress>(); serverList.add( new ServerAddress( "192.168.18.85" , 27017 )); //===================================================// List<MongoCredential> mcList = new ArrayList<MongoCredential>(); String username = "root" ; String database = "demo" ; char [] password = "root123" .toCharArray(); mcList.add(MongoCredential.createCredential(username, database,password)); //===================================================// MongoClientOptions.Builder builder = MongoClientOptions.builder(); // 與目標數據庫能夠建立的最大connection數量為50 builder.connectionsPerHost( 50 ); // 如果當前所有的connection都在使用中,則每個connection上可以有50個線程排隊等待 builder.threadsAllowedToBlockForConnectionMultiplier( 50 ); // 一個線程訪問數據庫的時候,在成功獲取到一個可用數據庫連接之前的最長等待時間為2分鐘 // 這里比較危險,如果超過maxWaitTime都沒有獲取到這個連接的話,該線程就會拋出Exception // 故這里設置的maxWaitTime應該足夠大,以免由于排隊線程過多造成的數據庫訪問失敗 builder.maxWaitTime( 1000 * 60 * 2 ); // 與數據庫建立連接的timeout設置為1分鐘 builder.connectTimeout( 1000 * 60 * 1 ); //===================================================// MongoClientOptions mco = builder.build(); return new MongoClient(serverList, mcList, mco); } catch (Exception e) { throw e; } } /** * @param dbname * @return * @throws Exception */ public static DB getDB(String dbname) throws Exception{ return getMongoClient().getDB(dbname); } /** * @param db */ public static void collections(DB db){ Set<String> colls = db.getCollectionNames(); for (String collName : colls) { System.out.println(collName); } } /** * 記錄總數查詢 * * @param db * @param name */ public static void count(DB db,String name){ DBCollection dbColl = db.getCollection(name); int count = dbColl.find().count(); System.out.println( "共有: " + count + "個" ); } /** * 模糊查詢 * * @param db * @param name */ public static void query(DB db,String name){ DBCollection dbColl = db.getCollection(name); //完全匹配 //Pattern pattern = Pattern.compile("^name$", Pattern.CASE_INSENSITIVE); //右匹配 //Pattern pattern = Pattern.compile("^.*name$", Pattern.CASE_INSENSITIVE); //左匹配 //Pattern pattern = Pattern.compile("^name.*$", Pattern.CASE_INSENSITIVE); //模糊匹配 Pattern pattern = Pattern.compile( "^.*name8.*$" , Pattern.CASE_INSENSITIVE); BasicDBObject query = new BasicDBObject(); query.put( "name" ,pattern); BasicDBObject sort = new BasicDBObject(); // 1,表示正序; -1,表示倒序 sort.put( "name" , 1 ); DBCursor cur = dbColl.find(query).sort(sort); int count = 0 ; while (cur.hasNext()) { DBObject obj = cur.next(); System.out.print( "name=" + obj.get( "name" )); System.out.print( ",email=" + obj.get( "email" )); System.out.println( ",passwd=" + obj.get( "passwd" )); count ++; } System.out.println( "共有: " + count + "個" ); } /** * 分頁查詢 * * @param db * @param name * @param start * @param pageSize */ public static void page(DB db,String name, int start, int pageSize){ DBCollection dbColl = db.getCollection(name); BasicDBObject sort = new BasicDBObject(); sort.put( "name" , 1 ); DBCursor cur = dbColl.find().sort(sort).skip(start).limit(pageSize);; int count = 0 ; while (cur.hasNext()) { DBObject obj = cur.next(); System.out.print( "name=" + obj.get( "name" )); System.out.print( ",email=" + obj.get( "email" )); System.out.println( ",passwd=" + obj.get( "passwd" )); count ++; } System.out.println( "共有: " + count + "個" ); } /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { DB db = getDB( "demo" ); collections(db); String name = "users" ; System.out.println( "count()=================================================" ); count(db,name); System.out.println( "query()=================================================" ); query(db,name); System.out.println( "page()=================================================" ); page(db,name, 10 , 10 ); } } |
以上就是Java操作MongoDB模糊查詢和分頁查詢的實現代碼,希望對大家的學習有所幫助。