激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - java連接mongoDB并進行增刪改查操作實例詳解

java連接mongoDB并進行增刪改查操作實例詳解

2021-07-28 11:30Xuych_ Java教程

這篇文章主要介紹了java連接mongoDB并進行增刪改查操作,結合實例形式詳細分析了java環境下MongoDB擴展包的下載、安裝及操作MongoDB連接、增刪改查等相關操作技巧,需要的朋友可以參考下

本文實例講述了java連接mongodb并進行增刪改查操作。分享給大家供大家參考,具體如下:

1、安裝 mongodb jdbc驅動程序

 

在java中使用mongodb之前,首先需要擁有java連接mongodb的第三方驅動包(jar包)

1)maven項目可通過在pom.xml中添加依賴

?
1
2
3
4
5
6
7
<dependencies>
  <dependency>
   <groupid>org.mongodb</groupid>
   <artifactid>mongo-java-driver</artifactid>
   <version>3.0.4</version>
  </dependency>
</dependencies>

2)非maven項目jar包下載地址:

   mongodb jar包

2、連接數據庫

 

將mongodb jdbc驅動加入到項目之后,就可以對mongodb進行操作了。

1)不通過認證連接mongodb服務

?
1
2
//連接到 mongodb 服務
mongoclient mongoclient = new mongoclient("localhost", 27017);

這里的 "localhost" 表示連接的服務器地址,27017 為端口號??梢允÷?端口號 不寫,系統將默認端口號為 27017。如:

?
1
2
//連接到 mongodb 服務,默認端口號為27017
mongoclient mongoclient = new mongoclient("localhost");

也可以將 服務器地址 和 端口號 都省略,系統默認服務器地址為 "localhost",端口號為 27017。如:

?
1
2
//連接到 mongodb 服務,默認連接到localhost服務器,端口號為27017
mongoclient mongoclient = new mongoclient();

2)通過認證連接mongodb服務

?
1
2
3
4
5
6
7
8
9
10
list<serveraddress> adds = new arraylist<>();
//serveraddress()兩個參數分別為 服務器地址 和 端口
serveraddress serveraddress = new serveraddress("localhost", 27017);
adds.add(serveraddress);
list<mongocredential> credentials = new arraylist<>();
//mongocredential.createscramsha1credential()三個參數分別為 用戶名 數據庫名稱 密碼
mongocredential mongocredential = mongocredential.createscramsha1credential("username", "databasename", "password".tochararray());
credentials.add(mongocredential);
//通過連接認證獲取mongodb連接
mongoclient mongoclient = new mongoclient(adds, credentials);

serveraddress()兩個參數 "localhost" , 27017 分別為 服務器地址 和 端口。

mongocredential.createscramsha1credential()三個參數 "username", "databasename", "password".tochararray() 分別為 用戶名 數據庫名稱 密碼。

3)連接到數據庫

?
1
2
//連接到數據庫
mongodatabase mongodatabase = mongoclient.getdatabase("test");

這里的 "test" 表示數據庫名,若指定的數據庫不存在,mongodb將會在你第一次插入文檔時創建數據庫。

4)封裝成工具類

由于所有連接數據庫操作都需要執行這兩步操作,我們可以將這兩步操作封裝成工具類。

?
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
import com.mongodb.mongoclient;
import com.mongodb.client.mongodatabase;
//mongodb 連接數據庫工具類
public class mongodbutil {
  //不通過認證獲取連接數據庫對象
  public static mongodatabase getconnect(){
    //連接到 mongodb 服務
    mongoclient mongoclient = new mongoclient("localhost", 27017);
    //連接到數據庫
    mongodatabase mongodatabase = mongoclient.getdatabase("test");
    //返回連接數據庫對象
    return mongodatabase;
  }
  //需要密碼認證方式連接
  public static mongodatabase getconnect2(){
    list<serveraddress> adds = new arraylist<>();
    //serveraddress()兩個參數分別為 服務器地址 和 端口
    serveraddress serveraddress = new serveraddress("localhost", 27017);
    adds.add(serveraddress);
    list<mongocredential> credentials = new arraylist<>();
    //mongocredential.createscramsha1credential()三個參數分別為 用戶名 數據庫名稱 密碼
    mongocredential mongocredential = mongocredential.createscramsha1credential("username", "databasename", "password".tochararray());
    credentials.add(mongocredential);
    //通過連接認證獲取mongodb連接
    mongoclient mongoclient = new mongoclient(adds, credentials);
    //連接到數據庫
    mongodatabase mongodatabase = mongoclient.getdatabase("test");
    //返回連接數據庫對象
    return mongodatabase;
  }
}

3、對數據庫進行crud

 

mongodb中的數據都是通過文檔(對應于關系型數據庫表中的一行)保存的,而文檔又保存在集合(對應于關系型數據庫的表)中。

1)獲取集合

要對數據進行crud操作首先要獲取到操作的集合。

?
1
2
//獲取集合
mongocollection<document> collection = mongodbutil.getconnect().getcollection("user");

這里的 "user" 表示集合的名字,如果指定的集合不存在,mongodb將會在你第一次插入文檔時創建集合。

2)創建文檔

要插入文檔首先需要創建文檔對象

?
1
2
3
4
//創建文檔
document document = new document("name","張三")
.append("sex", "男")
.append("age", 18);

3)插入文檔

插入一個文檔,使用 mongocollection 對象的 insertone() 方法,該方法接收一個 document 對象作為要插入的數據

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//插入一個文檔
@test
public void insertonetest(){
  //獲取數據庫連接對象
  mongodatabase mongodatabase = mongodbutil.getconnect();
  //獲取集合
  mongocollection<document> collection = mongodatabase.getcollection("user");
  //要插入的數據
  document document = new document("name","張三")
              .append("sex", "男")
              .append("age", 18);
  //插入一個文檔
  collection.insertone(document);
}

插入多個文檔,使用 mongocollection 對象的 insertmany() 方法,該方法接收一個 數據類型為 document 的 list 對象作為要插入的數據

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//插入多個文檔
@test
public void insertmanytest(){
  //獲取數據庫連接對象
  mongodatabase mongodatabase = mongodbutil.getconnect();
  //獲取集合
  mongocollection<document> collection = mongodatabase.getcollection("user");
  //要插入的數據
  list<document> list = new arraylist<>();
  for(int i = 1; i <= 3; i++) {
    document document = new document("name", "張三")
        .append("sex", "男")
        .append("age", 18);
    list.add(document);
  }
  //插入多個文檔
  collection.insertmany(list);
}

4)刪除文檔

刪除與篩選器匹配的單個文檔,使用 mongocollection 對象的 deleteone() 方法,該方法接收一個數據類型為 bson 的的對象作為過濾器篩選出需要刪除的文檔。然后刪除第一個。為了便于創建過濾器對象,jdbc驅動程序提供了 filters 類。

?
1
2
3
4
5
6
7
8
9
10
11
12
//刪除與篩選器匹配的單個文檔
@test
public void deleteonetest(){
  //獲取數據庫連接對象
  mongodatabase mongodatabase = mongodbutil.getconnect();
  //獲取集合
  mongocollection<document> collection = mongodatabase.getcollection("user");
  //申明刪除條件
  bson filter = filters.eq("age",18);
  //刪除與篩選器匹配的單個文檔
  collection.deleteone(filter);
}

刪除與篩選器匹配的所有文檔,使用 mongocollection 對象的 deletemany() 方法,該方法接收一個數據類型為 bson 的的對象作為過濾器篩選出需要刪除的文檔。然后刪除所有篩選出的文檔。

?
1
2
3
4
5
6
7
8
9
10
11
12
//刪除與篩選器匹配的所有文檔
@test
public void deletemanytest(){
  //獲取數據庫連接對象
  mongodatabase mongodatabase = mongodbutil.getconnect();
  //獲取集合
  mongocollection<document> collection = mongodatabase.getcollection("user");
  //申明刪除條件
  bson filter = filters.eq("age",18);
  //刪除與篩選器匹配的所有文檔
  collection.deletemany(filter);
}

5)修改文檔

修改單個文檔,使用 mongocollection 對象的 updateone() 方法,該方法接收兩個參數,第一個數據類型為 bson 的過濾器篩選出需要修改的文檔,第二個參數數據類型為 bson 指定如何修改篩選出的文檔。然后修改過濾器篩選出的第一個文檔。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//修改單個文檔
@test
public void updateonetest(){
  //獲取數據庫連接對象
  mongodatabase mongodatabase = mongodbutil.getconnect();
  //獲取集合
  mongocollection<document> collection = mongodatabase.getcollection("user");
  //修改過濾器
  bson filter = filters.eq("name", "張三");
  //指定修改的更新文檔
  document document = new document("$set", new document("age", 100));
  //修改單個文檔
  collection.updateone(filter, document);
}

修改多個文檔,使用 mongocollection 對象的 updatemany() 方法,該方法接收兩個參數,第一個數據類型為 bson 的過濾器篩選出需要修改的文檔,第二個參數數據類型為 bson 指定如何修改篩選出的文檔。然后修改過濾器篩選出的所有文檔。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//修改多個文檔
@test
public void updatemanytest(){
  //獲取數據庫連接對象
  mongodatabase mongodatabase = mongodbutil.getconnect();
  //獲取集合
  mongocollection<document> collection = mongodatabase.getcollection("user");
  //修改過濾器
  bson filter = filters.eq("name", "張三");
  //指定修改的更新文檔
  document document = new document("$set", new document("age", 100));
  //修改多個文檔
  collection.updatemany(filter, document);
}

6)查詢文檔

使用 mongocollection 對象的 find() 方法,該方法有多個重載方法,可以使用不帶參數的 find() 方法查詢集合中的所有文檔,也可以通過傳遞一個 bson 類型的 過濾器查詢符合條件的文檔。這幾個重載方法均返回一個 finditerable 類型的對象,可通過該對象遍歷出查詢到的所有文檔。

查找集合中的所有文檔

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//查找集合中的所有文檔
@test
public void findtest(){
  //獲取數據庫連接對象
  mongodatabase mongodatabase = mongodbutil.getconnect();
  //獲取集合
  mongocollection<document> collection = mongodatabase.getcollection("user");
  //查找集合中的所有文檔
  finditerable finditerable = collection.find();
  mongocursor cursor = finditerable.iterator();
  while (cursor.hasnext()) {
    system.out.println(cursor.next());
  }
}

指定查詢過濾器查詢

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//指定查詢過濾器查詢
@test
public void filterfindtest(){
  //獲取數據庫連接對象
  mongodatabase mongodatabase = mongodbutil.getconnect();
  //獲取集合
  mongocollection<document> collection = mongodatabase.getcollection("user");
  //指定查詢過濾器
  bson filter = filters.eq("name", "張三");
  //指定查詢過濾器查詢
  finditerable finditerable = collection.find(filter);
  mongocursor cursor = finditerable.iterator();
  while (cursor.hasnext()) {
    system.out.println(cursor.next());
  }
}

可通過 first() 方法取出查詢到的第一個文檔

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//取出查詢到的第一個文檔
@test
public void findtest(){
  //獲取數據庫連接對象
  mongodatabase mongodatabase = mongodbutil.getconnect();
  //獲取集合
  mongocollection<document> collection = mongodatabase.getcollection("user");
  //查找集合中的所有文檔
  finditerable finditerable = collection.find();
  //取出查詢到的第一個文檔
  document document = (document) finditerable.first();
  //打印輸出
  system.out.println(document);
}

4、總結

 

到這里,java對mongodb的一些基本操作就介紹完了。實現的步驟為:添加驅動==>連接到服務==>連接到數據庫==>選擇集合==>對集合進行crud操作。

希望本文所述對大家java程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲五码在线观看视频 | 4p一女两男做爰在线观看 | 国产超碰人人做人人爱 | 国产一级免费视频 | 黄色片免费看网站 | 国产高清自拍一区 | 日本免费不卡一区二区 | 午夜精品视频在线 | 亚洲精品午夜国产va久久成人 | 中国漂亮护士一级a毛片 | 久久精品日本一区 | 国产精品久久久久久久av | 一级黄色淫片 | 亚洲第一成人久久网站 | 欧美精品黄色 | 精品成人av一区二区三区 | 国产成人av一区 | 亚洲精品aa | 日操操夜操操 | 久久久久久久久久网 | 日日噜噜噜噜久久久精品毛片 | 欧美精品一级 | 精品在线视频播放 | 亚洲成人网一区 | 久草在线视频看看 | 久久成年网站 | 99精品热视频 | 视频一区二区精品 | 国产午夜亚洲精品午夜鲁丝片 | 久久蜜桃精品一区二区三区综合网 | 精品国产91久久久久久浪潮蜜月 | 久久成人精品视频 | 欧美人一级淫片a免费播放 久久99精品久久久久久园产越南 | 国产精品久久久久久久久久久久久久久 | 久久久久久久久久久国产精品 | 九九热九九热 | 毛片三区| 99久久久国产精品免费99 | xxxxhdhdhdhd日本 | 蜜桃一本色道久久综合亚洲精品冫 | www.91sese|