国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫 - MongoDB - MongoDB操作類封裝實(shí)例代碼

MongoDB操作類封裝實(shí)例代碼

2020-05-24 15:47八音弦 MongoDB

這篇文章主要給大家介紹了關(guān)于MongoDB操作類封裝的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

最近接到一個需求,要做MongoDB打點(diǎn)數(shù)據(jù)的統(tǒng)計(jì),在學(xué)習(xí)過MongoDB的操作之后,封裝了一個MongoDB的操作類,分為兩部分,基本思想是參照了自己寫過的mysql的操作類。一個是基本的操作類,包括所有基本操作的靜態(tài)方法,還有一個是mongoobject,就是具體操作的實(shí)現(xiàn)類。

以后再寫如何用spring boot寫一個簡單的統(tǒng)計(jì)服務(wù)。

MongoDB操作類封裝

mongobase代碼如下:

?
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
package com.fun.mongodb;
 
import com.fun.frame.SourceCode;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
 
import java.util.Arrays;
import java.util.List;
 
/**
 * mongo操作類的基礎(chǔ)類
 */
public class MongoBase extends SourceCode {
 
 /**
  * 獲取服務(wù)地址list
  *
  * @param addresses
  * @return
  */
 public static List<ServerAddress> getServers(ServerAddress... addresses) {
  return Arrays.asList(addresses);
 }
 
 /**
  * 獲取服務(wù)地址
  *
  * @param host
  * @param port
  * @return
  */
 public static ServerAddress getServerAdress(String host, int port) {
  return new ServerAddress(host, port);
 }
 
 /**
  * 獲取認(rèn)證list
  *
  * @param credentials
  * @return
  */
 public static List<MongoCredential> getCredentials(MongoCredential... credentials) {
  return Arrays.asList(credentials);
 }
 
 /**
  * 獲取驗(yàn)證
  *
  * @param userName
  * @param database
  * @param password
  * @return
  */
 public static MongoCredential getMongoCredential(String userName, String database, String password) {
  return MongoCredential.createCredential(userName, database, password.toCharArray());
 }
 
 /**
  * 獲取mongo客戶端
  *
  * @param addresses
  * @param credentials
  * @return
  */
 public static MongoClient getMongoClient(List<ServerAddress> addresses, List<MongoCredential> credentials) {
  return new MongoClient(addresses, credentials);
 }
 
 /**
  * 連接mongo數(shù)據(jù)庫
  *
  * @param mongoClient
  * @param databaseName
  * @return
  */
 public static MongoDatabase getMongoDatabase(MongoClient mongoClient, String databaseName) {
  return mongoClient.getDatabase(databaseName);
 }
 
 /**
  * 連接mongo集
  *
  * @param mongoDatabase
  * @param collectionName
  * @return
  */
 public static MongoCollection<Document> getMongoCollection(MongoDatabase mongoDatabase, String collectionName) {
  return mongoDatabase.getCollection(collectionName);
 }
 
 /**
  * 關(guān)閉數(shù)據(jù)庫連接
  *
  * @param mongoClient
  */
 public static void MongoOver(MongoClient mongoClient) {
  mongoClient.close();
 }
 
 /**
  * 獲取mongo客戶端對象,通過servers和credentials對象創(chuàng)建
  *
  * @param mongoObject
  * @return
  */
 public static MongoClient getMongoClient(MongoObject mongoObject) {
  MongoClient mongoClient = new MongoClient(getServers(getServerAdress(mongoObject.host, mongoObject.port)), getCredentials(getMongoCredential(mongoObject.user, mongoObject.database, mongoObject.password)));
  return mongoClient;
 }
 
 /**
  * 獲取mongo客戶端對象,通過uri方式連接
  *
  * @param mongoObject
  * @return
  */
 public static MongoClient getMongoClientOnline(MongoObject mongoObject) {
  String format = String.format("mongodb://%s:%s@%s:%d/%s", mongoObject.user, mongoObject.password, mongoObject.host, mongoObject.port, mongoObject.database);
  return new MongoClient(new MongoClientURI(format));
 }
 
 /**
  * 獲取collection對象
  *
  * @param mongoObject
  * @return
  */
 public static MongoCollection<Document> getCollection(MongoObject mongoObject, String collectionName) {
  return getMongoClient(mongoObject).getDatabase(mongoObject.database).getCollection(collectionName);
 }
 
 /**
  * 獲取collection對象
  *
  * @param mongoObject
  * @return
  */
 public static MongoCollection<Document> getCollectionOnline(MongoObject mongoObject, String collectionName) {
  return getMongoClientOnline(mongoObject).getDatabase(mongoObject.database).getCollection(collectionName);
 }
 
}

mongoobject的代碼如下:

?
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
package com.fun.mongodb;
 
 
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
 
/**
 * mongo數(shù)據(jù)庫配置對象,針對單個數(shù)據(jù)服務(wù),單個身份驗(yàn)證
 */
public class MongoObject extends MongoBase {
 
  String host;
 
  int port;
 
  String user;
 
  String password;
 
  String database;
 
  MongoClient mongoClient;
 
  /**
   * 創(chuàng)建數(shù)據(jù)連接
   *
   * @param host
   * @param port
   * @param user
   * @param password
   * @param database
   */
  public MongoObject(String host, int port, String user, String password, String database) {
    this.host = host;
    this.port = port;
    this.user = user;
    this.password = password;
    this.database = database;
    this.mongoClient = getMongoClient(this);
  }
 
  /**
   * 創(chuàng)建數(shù)據(jù)庫連接
   *
   * @param port
   * @param host
   * @param user
   * @param password
   * @param database
   */
  public MongoObject(int port, String host, String user, String password, String database) {
    this.host = host;
    this.port = port;
    this.user = user;
    this.password = password;
    this.database = database;
    this.mongoClient = getMongoClientOnline(this);
  }
 
  /**
   * 獲取colletion對象
   *
   * @param collectionName
   * @return
   */
  public MongoCollection<Document> getMongoCollection(String collectionName) {
    MongoClient mongoClientOnline = getMongoClientOnline(this);
    return mongoClientOnline.getDatabase(database).getCollection(collectionName);
  }
 
 
  /**
   * 關(guān)閉連接
   */
  public void over() {
    MongoOver(this.mongoClient);
  }
}
 @Override
  public MongoObject clone() {
    return new MongoObject(this.host, this.port, this.user, this.password, this.database);
  }
 
  public MongoObject clone2() {
    return new MongoObject(this.port, this.host, this.user, this.password, this.database);
  }

具體效果非常不錯,測試代碼如下:

?
1
2
3
4
5
6
7
public static void main(String[] args) {
   MongoObject ready = new MongoObject("*****", 5117, "fission_record", "fission_record", "fission_record");
   MongoCollection<Document> app = ready.getMongoCollection("app_logs_20181109");
   Document first = app.find().first();
   output(first);
   ready.over();
 }

打印內(nèi)容如下:

Document{{_id=5be4ce052ce01b21b6c26a64, _class=com.fission.next.record.bean.AppRecordBean, user_id=5482, action_type={"gameId":2,"userId":"5482"}, action_extern=DataSta_Game_Starts, client_version=15, client_ip=114.5.146.239, client_imei=UNKNOWN, client_dev=xiaomi-Redmi 5 Plus, client_type=200, server_time=1541721601655, os_name=200, os_version=15, client_time=1541721577025}}

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對服務(wù)器之家的支持。

原文鏈接:https://segmentfault.com/a/1190000019996873

延伸 · 閱讀

精彩推薦
  • MongoDB遷移sqlserver數(shù)據(jù)到MongoDb的方法

    遷移sqlserver數(shù)據(jù)到MongoDb的方法

    這篇文章主要介紹了遷移sqlserver數(shù)據(jù)到MongoDb的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下...

    聽楓xl9682021-01-03
  • MongoDBmongodb基本命令實(shí)例小結(jié)

    mongodb基本命令實(shí)例小結(jié)

    這篇文章主要介紹了mongodb基本命令,結(jié)合實(shí)例形式總結(jié)分析了MongoDB數(shù)據(jù)庫切換、查看、刪除、查詢等基本命令用法與操作注意事項(xiàng),需要的朋友可以參考下...

    dawn-liu3652020-05-26
  • MongoDBMongodb實(shí)現(xiàn)定時備份與恢復(fù)的方法教程

    Mongodb實(shí)現(xiàn)定時備份與恢復(fù)的方法教程

    這篇文章主要給大家介紹了Mongodb實(shí)現(xiàn)定時備份與恢復(fù)的方法教程,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面...

    chenjsh364522020-05-13
  • MongoDBMongoDB 內(nèi)存使用情況分析

    MongoDB 內(nèi)存使用情況分析

    都說 MongoDB 是個內(nèi)存大戶,但是怎么知道它到底用了多少內(nèi)存呢...

    MongoDB教程網(wǎng)10002020-09-29
  • MongoDBMongoDB中javascript腳本編程簡介和入門實(shí)例

    MongoDB中javascript腳本編程簡介和入門實(shí)例

    作為一個數(shù)據(jù)庫,MongoDB有一個很大的優(yōu)勢——它使用js管理數(shù)據(jù)庫,所以也能夠使用js腳本進(jìn)行復(fù)雜的管理——這種方法非常靈活 ...

    MongoDB教程網(wǎng)6982020-04-24
  • MongoDBMongoDB安裝圖文教程

    MongoDB安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了MongoDB安裝圖文教程,分為兩大部分為大家介紹下載MongoDB和安裝MongoDB的方法,感興趣的小伙伴們可以參考一下 ...

    Yangyi.He6132020-05-07
  • MongoDBMongoDB憑什么躋身數(shù)據(jù)庫排行前五

    MongoDB憑什么躋身數(shù)據(jù)庫排行前五

    MongoDB以比去年同期超出65.96分的成績繼續(xù)雄踞榜單前五,這個增幅在全榜僅次于PostgreSQL的77.99,而其相對于4月份的6.10分的增長也是僅次于微軟SQL Server排名...

    孫浩峰3892020-05-22
  • MongoDB分布式文檔存儲數(shù)據(jù)庫之MongoDB分片集群的問題

    分布式文檔存儲數(shù)據(jù)庫之MongoDB分片集群的問題

    這篇文章主要介紹了分布式文檔存儲數(shù)據(jù)庫之MongoDB分片集群的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋...

    Linux-18743072020-12-20
主站蜘蛛池模板: 日韩中文在线视频 | 精品一区二区三区久久 | 亚洲一区在线日韩在线深爱 | 中文字幕欧美日韩 | 久草福利在线视频 | 国产亚洲一区二区精品 | 一区视频在线 | 欧美精品在线看 | 欧美片网站免费 | 天天射天天干 | 在线色网 | 精品久草 | 亚洲精品在线看 | 99re国产精品视频 | 国产欧美在线 | 日韩电影免费观看 | 精品国产子伦久久久久久小说 | 91精品国产综合久久久久久 | 国产性猛交xxxx免费看久久 | 一本色道久久综合狠狠躁的推荐 | 成人av观看 | 97精品国产一区二区三区 | 成人综合电影网 | 亚洲视频在线观看 | 久色视频在线观看 | 国产精品不卡在线播放 | 色网站在线观看 | 一二三区字幕免费观看av | www.久久精品 | 日韩国产欧美视频 | 免费av电影网站 | 一级特黄bbbbb免费观看 | 天天干天天操天天干 | 久久久久久久 | 男人的天堂久久 | 国产精品日日 | 99热少妇| 91中文在线观看 | 免费在线成人网 | 91免费观看视频 | 九九热在线视频 |