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

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

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程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本韩国推理片免费观看网站 | 四虎影视在线影院在线观看 | 午色影院| 精品国产福利一区二区在线 | 色五婷婷 | 男男gaygays中国 | 女子监狱第二季未删减在线看 | 亚洲欧美久久久久久久久久爽网站 | 波多野结衣52部合集在线观看 | 亚洲嫩模吧粉嫩粉嫩冒白浆 | 人成网站在线观看 | 久草在在线免视频在线观看 | 袖珍人与大黑人性视频 | 精品久久香蕉国产线看观看亚洲 | 久久精品动漫网一区二区 | 精品国产一区二区三区久久久蜜臀 | 91视频国产一区 | 激情三级hd中文字幕 | 亚洲精品一区二区三区在线播放 | 免费成年视频 | 欧美xxxxx性 欧美xxxbrazzers | 日本在线不卡免 | 欧美一区二区三区精品国产 | free性videoxxⅹ印度 | 亚洲免费网站在线观看 | 成人二区 | 2021最新国产成人精品视频 | 日本b站一卡二不卡三卡四卡 | free chinese麻豆| 精品高潮呻吟99AV无码视频 | 91亚洲一区二区在线观看不卡 | 欧美久久久久久久一区二区三区 | 农夫成人网 | 天堂久久久久va久久久久 | 毛片在线网址 | 国产三级自拍视频 | 91久久精品国产亚洲 | 色男人网| 日韩a无吗一区二区三区 | 女主被男主做哭失禁高h | 无遮挡免费h肉动漫在线观看 |