欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學(xué)堂java培訓(xùn)之連接mongoDB并進(jìn)行增刪改查操作實(shí)例詳解

2019-04-02 14:37:49 4137瀏覽

今天扣丁學(xué)堂Java培訓(xùn)老師給大家分享一篇關(guān)于java連接mongoDB并進(jìn)行增刪改查操作,結(jié)合實(shí)例形式詳細(xì)分析了java環(huán)境下MongoDB擴(kuò)展包的下載、安裝及操作MongoDB連接、增刪改查等相關(guān)操作技巧。



1、安裝MongoDBJDBC驅(qū)動(dòng)程序

在java中使用mongoDB之前,首先需要擁有java連接mongoDB的第三方驅(qū)動(dòng)包(jar包)

1)maven項(xiàng)目可通過(guò)在pom.xml中添加依賴

<dependencies>
  <dependency>
   <groupId>org.mongodb</groupId>
   <artifactId>mongo-java-driver</artifactId>
   <version>3.0.4</version>
  </dependency>
</dependencies>

2)非maven項(xiàng)目jar包下載地址:

2、連接數(shù)據(jù)庫(kù)

將mongoDBJDBC驅(qū)動(dòng)加入到項(xiàng)目之后,就可以對(duì)mongoDB進(jìn)行操作了。

1)不通過(guò)認(rèn)證連接mongoDB服務(wù)

//連接到 mongodb 服務(wù)
MongoClient mongoClient = new MongoClient("localhost", 27017);

這里的"localhost"表示連接的服務(wù)器地址,27017為端口號(hào)??梢允÷远丝谔?hào)不寫(xiě),系統(tǒng)將默認(rèn)端口號(hào)為27017。如:

//連接到 mongodb 服務(wù),默認(rèn)端口號(hào)為27017
MongoClient mongoClient = new MongoClient("localhost");

也可以將服務(wù)器地址和端口號(hào)都省略,系統(tǒng)默認(rèn)服務(wù)器地址為"localhost",端口號(hào)為27017。如:

//連接到 mongodb 服務(wù),默認(rèn)連接到localhost服務(wù)器,端口號(hào)為27017
MongoClient mongoClient = new MongoClient();

2)通過(guò)認(rèn)證連接mongoDB服務(wù)

List<ServerAddress> adds = new ArrayList<>();
//ServerAddress()兩個(gè)參數(shù)分別為 服務(wù)器地址 和 端口
ServerAddress serverAddress = new ServerAddress("localhost", 27017);
adds.add(serverAddress);
List<MongoCredential> credentials = new ArrayList<>();
//MongoCredential.createScramSha1Credential()三個(gè)參數(shù)分別為 用戶名 數(shù)據(jù)庫(kù)名稱 密碼
MongoCredential mongoCredential = MongoCredential.createScramSha1Credential("username", "databaseName", "password".toCharArray());
credentials.add(mongoCredential);
//通過(guò)連接認(rèn)證獲取MongoDB連接
MongoClient mongoClient = new MongoClient(adds, credentials);

ServerAddress()兩個(gè)參數(shù)"localhost",27017分別為服務(wù)器地址和端口。

MongoCredential.createScramSha1Credential()三個(gè)參數(shù)"username","databaseName","password".toCharArray()分別為用戶名數(shù)據(jù)庫(kù)名稱密碼。

3)連接到數(shù)據(jù)庫(kù)

//連接到數(shù)據(jù)庫(kù)
MongoDatabase mongoDatabase = mongoClient.getDatabase("test");

這里的"test"表示數(shù)據(jù)庫(kù)名,若指定的數(shù)據(jù)庫(kù)不存在,mongoDB將會(huì)在你第一次插入文檔時(shí)創(chuàng)建數(shù)據(jù)庫(kù)。

4)封裝成工具類

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

import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
//mongodb 連接數(shù)據(jù)庫(kù)工具類
public class MongoDBUtil {
  //不通過(guò)認(rèn)證獲取連接數(shù)據(jù)庫(kù)對(duì)象
  public static MongoDatabase getConnect(){
    //連接到 mongodb 服務(wù)
    MongoClient mongoClient = new MongoClient("localhost", 27017);
    //連接到數(shù)據(jù)庫(kù)
    MongoDatabase mongoDatabase = mongoClient.getDatabase("test");
    //返回連接數(shù)據(jù)庫(kù)對(duì)象
    return mongoDatabase;
  }
  //需要密碼認(rèn)證方式連接
  public static MongoDatabase getConnect2(){
    List<ServerAddress> adds = new ArrayList<>();
    //ServerAddress()兩個(gè)參數(shù)分別為 服務(wù)器地址 和 端口
    ServerAddress serverAddress = new ServerAddress("localhost", 27017);
    adds.add(serverAddress);
    List<MongoCredential> credentials = new ArrayList<>();
    //MongoCredential.createScramSha1Credential()三個(gè)參數(shù)分別為 用戶名 數(shù)據(jù)庫(kù)名稱 密碼
    MongoCredential mongoCredential = MongoCredential.createScramSha1Credential("username", "databaseName", "password".toCharArray());
    credentials.add(mongoCredential);
    //通過(guò)連接認(rèn)證獲取MongoDB連接
    MongoClient mongoClient = new MongoClient(adds, credentials);
    //連接到數(shù)據(jù)庫(kù)
    MongoDatabase mongoDatabase = mongoClient.getDatabase("test");
    //返回連接數(shù)據(jù)庫(kù)對(duì)象
    return mongoDatabase;
  }
}

3、對(duì)數(shù)據(jù)庫(kù)進(jìn)行CRUD

mongoDB中的數(shù)據(jù)都是通過(guò)文檔(對(duì)應(yīng)于關(guān)系型數(shù)據(jù)庫(kù)表中的一行)保存的,而文檔又保存在集合(對(duì)應(yīng)于關(guān)系型數(shù)據(jù)庫(kù)的表)中。

1)獲取集合

要對(duì)數(shù)據(jù)進(jìn)行CRUD操作首先要獲取到操作的集合。

//獲取集合
MongoCollection<Document> collection = MongoDBUtil.getConnect().getCollection("user");

這里的"user"表示集合的名字,如果指定的集合不存在,mongoDB將會(huì)在你第一次插入文檔時(shí)創(chuàng)建集合。

2)創(chuàng)建文檔

要插入文檔首先需要?jiǎng)?chuàng)建文檔對(duì)象

//創(chuàng)建文檔
Document document = new Document("name","張三")
.append("sex", "男")
.append("age", 18);

3)插入文檔

插入一個(gè)文檔,使用MongoCollection對(duì)象的insertOne()方法,該方法接收一個(gè)Document對(duì)象作為要插入的數(shù)據(jù)

//插入一個(gè)文檔
@Test
public void insertOneTest(){
  //獲取數(shù)據(jù)庫(kù)連接對(duì)象
  MongoDatabase mongoDatabase = MongoDBUtil.getConnect();
  //獲取集合
  MongoCollection<Document> collection = mongoDatabase.getCollection("user");
  //要插入的數(shù)據(jù)
  Document document = new Document("name","張三")
              .append("sex", "男")
              .append("age", 18);
  //插入一個(gè)文檔
  collection.insertOne(document);
}

插入多個(gè)文檔,使用MongoCollection對(duì)象的insertMany()方法,該方法接收一個(gè)數(shù)據(jù)類型為Document的List對(duì)象作為要插入的數(shù)據(jù)

//插入多個(gè)文檔
@Test
public void insertManyTest(){
  //獲取數(shù)據(jù)庫(kù)連接對(duì)象
  MongoDatabase mongoDatabase = MongoDBUtil.getConnect();
  //獲取集合
  MongoCollection<Document> collection = mongoDatabase.getCollection("user");
  //要插入的數(shù)據(jù)
  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);
  }
  //插入多個(gè)文檔
  collection.insertMany(list);
}

4)刪除文檔

刪除與篩選器匹配的單個(gè)文檔,使用MongoCollection對(duì)象的deleteOne()方法,該方法接收一個(gè)數(shù)據(jù)類型為Bson的的對(duì)象作為過(guò)濾器篩選出需要?jiǎng)h除的文檔。然后刪除第一個(gè)。為了便于創(chuàng)建過(guò)濾器對(duì)象,JDBC驅(qū)動(dòng)程序提供了Filters類。

//刪除與篩選器匹配的單個(gè)文檔
@Test
public void deleteOneTest(){
  //獲取數(shù)據(jù)庫(kù)連接對(duì)象
  MongoDatabase mongoDatabase = MongoDBUtil.getConnect();
  //獲取集合
  MongoCollection<Document> collection = mongoDatabase.getCollection("user");
  //申明刪除條件
  Bson filter = Filters.eq("age",18);
  //刪除與篩選器匹配的單個(gè)文檔
  collection.deleteOne(filter);
}

刪除與篩選器匹配的所有文檔,使用MongoCollection對(duì)象的deleteMany()方法,該方法接收一個(gè)數(shù)據(jù)類型為Bson的的對(duì)象作為過(guò)濾器篩選出需要?jiǎng)h除的文檔。然后刪除所有篩選出的文檔。

//刪除與篩選器匹配的所有文檔
@Test
public void deleteManyTest(){
  //獲取數(shù)據(jù)庫(kù)連接對(duì)象
  MongoDatabase mongoDatabase = MongoDBUtil.getConnect();
  //獲取集合
  MongoCollection<Document> collection = mongoDatabase.getCollection("user");
  //申明刪除條件
  Bson filter = Filters.eq("age",18);
  //刪除與篩選器匹配的所有文檔
  collection.deleteMany(filter);
}

5)修改文檔

修改單個(gè)文檔,使用MongoCollection對(duì)象的updateOne()方法,該方法接收兩個(gè)參數(shù),第一個(gè)數(shù)據(jù)類型為Bson的過(guò)濾器篩選出需要修改的文檔,第二個(gè)參數(shù)數(shù)據(jù)類型為Bson指定如何修改篩選出的文檔。然后修改過(guò)濾器篩選出的第一個(gè)文檔。

//修改單個(gè)文檔
@Test
public void updateOneTest(){
  //獲取數(shù)據(jù)庫(kù)連接對(duì)象
  MongoDatabase mongoDatabase = MongoDBUtil.getConnect();
  //獲取集合
  MongoCollection<Document> collection = mongoDatabase.getCollection("user");
  //修改過(guò)濾器
  Bson filter = Filters.eq("name", "張三");
  //指定修改的更新文檔
  Document document = new Document("$set", new Document("age", 100));
  //修改單個(gè)文檔
  collection.updateOne(filter, document);
}

修改多個(gè)文檔,使用MongoCollection對(duì)象的updateMany()方法,該方法接收兩個(gè)參數(shù),第一個(gè)數(shù)據(jù)類型為Bson的過(guò)濾器篩選出需要修改的文檔,第二個(gè)參數(shù)數(shù)據(jù)類型為Bson指定如何修改篩選出的文檔。然后修改過(guò)濾器篩選出的所有文檔。

//修改多個(gè)文檔
@Test
public void updateManyTest(){
  //獲取數(shù)據(jù)庫(kù)連接對(duì)象
  MongoDatabase mongoDatabase = MongoDBUtil.getConnect();
  //獲取集合
  MongoCollection<Document> collection = mongoDatabase.getCollection("user");
  //修改過(guò)濾器
  Bson filter = Filters.eq("name", "張三");
  //指定修改的更新文檔
  Document document = new Document("$set", new Document("age", 100));
  //修改多個(gè)文檔
  collection.updateMany(filter, document);
}

6)查詢文檔

使用MongoCollection對(duì)象的find()方法,該方法有多個(gè)重載方法,可以使用不帶參數(shù)的find()方法查詢集合中的所有文檔,也可以通過(guò)傳遞一個(gè)Bson類型的過(guò)濾器查詢符合條件的文檔。這幾個(gè)重載方法均返回一個(gè)FindIterable類型的對(duì)象,可通過(guò)該對(duì)象遍歷出查詢到的所有文檔。

查找集合中的所有文檔

//查找集合中的所有文檔
@Test
public void findTest(){
  //獲取數(shù)據(jù)庫(kù)連接對(duì)象
  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());
  }
}

指定查詢過(guò)濾器查詢

//指定查詢過(guò)濾器查詢
@Test
public void FilterfindTest(){
  //獲取數(shù)據(jù)庫(kù)連接對(duì)象
  MongoDatabase mongoDatabase = MongoDBUtil.getConnect();
  //獲取集合
  MongoCollection<Document> collection = mongoDatabase.getCollection("user");
  //指定查詢過(guò)濾器
  Bson filter = Filters.eq("name", "張三");
  //指定查詢過(guò)濾器查詢
  FindIterable findIterable = collection.find(filter);
  MongoCursor cursor = findIterable.iterator();
  while (cursor.hasNext()) {
    System.out.println(cursor.next());
  }
}

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

//取出查詢到的第一個(gè)文檔
@Test
public void findTest(){
  //獲取數(shù)據(jù)庫(kù)連接對(duì)象
  MongoDatabase mongoDatabase = MongoDBUtil.getConnect();
  //獲取集合
  MongoCollection<Document> collection = mongoDatabase.getCollection("user");
  //查找集合中的所有文檔
  FindIterable findIterable = collection.find();
  //取出查詢到的第一個(gè)文檔
  Document document = (Document) findIterable.first();
  //打印輸出
  System.out.println(document);
}
以上就是關(guān)于扣丁學(xué)堂java培訓(xùn)之連接mongoDB并進(jìn)行增刪改查操作實(shí)例詳解,想要學(xué)好Java開(kāi)發(fā)小編給大家推薦口碑良好的扣丁學(xué)堂,扣丁學(xué)堂有專業(yè)老師制定的Java學(xué)習(xí)路線圖輔助學(xué)員學(xué)習(xí),此外還有與時(shí)俱進(jìn)的Java視頻教程供大家學(xué)習(xí),想要學(xué)好Java開(kāi)發(fā)技術(shù)的小伙伴快快行動(dòng)吧??鄱W(xué)堂Java技術(shù)交流群:670348138。


扣丁學(xué)堂微信公眾號(hào)                              HTML5前端開(kāi)發(fā)VIP免費(fèi)公開(kāi)課

     【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】           【掃碼進(jìn)入HTML5前端開(kāi)發(fā)VIP免費(fèi)公開(kāi)課



查看更多關(guān)于“Java開(kāi)發(fā)資訊”的相關(guān)文章>>

標(biāo)簽: Java培訓(xùn) Java視頻教程 Java多線程 Java面試題 Java學(xué)習(xí)視頻 Java開(kāi)發(fā)

熱門專區(qū)

暫無(wú)熱門資訊

課程推薦

微信
微博
15311698296

全國(guó)免費(fèi)咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號(hào)中關(guān)村智誠(chéng)科創(chuàng)大廈4層
京ICP備2021002079號(hào)-2   Copyright ? 2017 - 2022
返回頂部 返回頂部