一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - Java操作MongoDB模糊查詢(xún)和分頁(yè)查詢(xún)

Java操作MongoDB模糊查詢(xún)和分頁(yè)查詢(xún)

2020-04-22 11:34java教程網(wǎng) JAVA教程

這篇文章主要介紹了Java操作MongoDB模糊查詢(xún)和分頁(yè)查詢(xún)的相關(guān)資料,需要的朋友可以參考下

本文實(shí)例為大家分享了Java操作MongoDB模糊查詢(xún)和分頁(yè)查詢(xún),供大家參考,具體內(nèi)容如下

模糊查詢(xún)條件:
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);
記錄總數(shù)查詢(xún):
count(),返回查詢(xún)總數(shù)。
查詢(xún)記錄排序:
BasicDBObject sort = new BasicDBObject();
sort.put("name",1);
1、表示正序;-1.表示倒序
分頁(yè)查詢(xún):
skip(),跳過(guò)多少條記錄
limit(),返回多少條記錄

代碼實(shí)例:

?
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();
      // 與目標(biāo)數(shù)據(jù)庫(kù)能夠建立的最大connection數(shù)量為50
      builder.connectionsPerHost(50);
      // 如果當(dāng)前所有的connection都在使用中,則每個(gè)connection上可以有50個(gè)線(xiàn)程排隊(duì)等待
      builder.threadsAllowedToBlockForConnectionMultiplier(50);
      // 一個(gè)線(xiàn)程訪問(wèn)數(shù)據(jù)庫(kù)的時(shí)候,在成功獲取到一個(gè)可用數(shù)據(jù)庫(kù)連接之前的最長(zhǎng)等待時(shí)間為2分鐘
      // 這里比較危險(xiǎn),如果超過(guò)maxWaitTime都沒(méi)有獲取到這個(gè)連接的話(huà),該線(xiàn)程就會(huì)拋出Exception
      // 故這里設(shè)置的maxWaitTime應(yīng)該足夠大,以免由于排隊(duì)線(xiàn)程過(guò)多造成的數(shù)據(jù)庫(kù)訪問(wèn)失敗
      builder.maxWaitTime(1000*60*2);
      // 與數(shù)據(jù)庫(kù)建立連接的timeout設(shè)置為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);
    }
  }
   
  /**
   * 記錄總數(shù)查詢(xún)
   *
   * @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 + "個(gè)");
  }
   
   
  /**
   * 模糊查詢(xún)
   *
   * @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 + "個(gè)");
  }
   
 
  /**
   * 分頁(yè)查詢(xún)
   *
   * @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 + "個(gè)");
  }
  /**
   * @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模糊查詢(xún)和分頁(yè)查詢(xún)的實(shí)現(xiàn)代碼,希望對(duì)大家的學(xué)習(xí)有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 白丝出水| 99精品在线免费观看 | 日韩制服丝袜在线观看 | 日韩欧美一区二区三区中文精品 | 女教师系列三上悠亚在线观看 | 丝瓜香蕉视频 | 国内交换一区二区三区 | 亚洲成a人片777777久久 | 99re思思| 亚洲AV中文字幕无码久久 | 国产精品色拉拉免费看 | 国产91精选在线观看麻豆 | 好大好粗好舒服 | 午夜大片在线观看 | 色综合伊人色综合网亚洲欧洲 | 亚洲香蕉伊在人在线观看9 亚洲系列国产系列 | 欧美人伦禁忌.5 | 国产资源中文字幕 | 国产 日韩欧美 | 全日爱韩国视频在线观看 | 热国产热综合 | 赤坂丽女医bd无删减在线观看 | 色一情一区二区三区四区 | 欧美影院天天5g天天爽 | 精品久久久久久久久久久久久久久 | 亚洲国产精品久久久久久网站 | a毛片在线免费观看 | 久久综合老色鬼网站 | 国产专区日韩精品欧美色 | 久久综合狠狠综合狠狠 | 糖心在线观看网 | 欧美激情 亚洲 | 大伊香蕉在线精品不卡视频 | 精品视频一区二区三区 | 精品国产自在在线在线观看 | 禁忌4中文| 亚洲小视频在线 | 久久视频在线视频 | 国产精品拍拍拍福利在线观看 | 成人夜视频寂寞在线观看 | 99精品久久99久久久久久 |