這篇文章給大家介紹使用java怎么連接MongoDB并進(jìn)行增刪改查操作,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
七星關(guān)區(qū)ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
在java中使用mongoDB之前,首先需要擁有java連接mongoDB的第三方驅(qū)動(dòng)包(jar包)
org.mongodb mongo-java-driver 3.0.4
mongoDB jar包
將mongoDB JDBC驅(qū)動(dòng)加入到項(xiàng)目之后,就可以對(duì)mongoDB進(jìn)行操作了。
//連接到 mongodb 服務(wù) MongoClient mongoClient = new MongoClient("localhost", 27017);
這里的 "localhost" 表示連接的服務(wù)器地址,27017 為端口號(hào)??梢允÷?端口號(hào) 不寫,系統(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();
Listadds = new ArrayList<>(); //ServerAddress()兩個(gè)參數(shù)分別為 服務(wù)器地址 和 端口 ServerAddress serverAddress = new ServerAddress("localhost", 27017); adds.add(serverAddress); List credentials = new ArrayList<>(); //MongoCredential.createScramSha1Credential()三個(gè)參數(shù)分別為 用戶名 數(shù)據(jù)庫名稱 密碼 MongoCredential mongoCredential = MongoCredential.createScramSha1Credential("username", "databaseName", "password".toCharArray()); credentials.add(mongoCredential); //通過連接認(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ù)庫名稱 密碼。
//連接到數(shù)據(jù)庫 MongoDatabase mongoDatabase = mongoClient.getDatabase("test");
這里的 "test" 表示數(shù)據(jù)庫名,若指定的數(shù)據(jù)庫不存在,mongoDB將會(huì)在你第一次插入文檔時(shí)創(chuàng)建數(shù)據(jù)庫。
由于所有連接數(shù)據(jù)庫操作都需要執(zhí)行這兩步操作,我們可以將這兩步操作封裝成工具類。
import com.mongodb.MongoClient; import com.mongodb.client.MongoDatabase; //mongodb 連接數(shù)據(jù)庫工具類 public class MongoDBUtil { //不通過認(rèn)證獲取連接數(shù)據(jù)庫對(duì)象 public static MongoDatabase getConnect(){ //連接到 mongodb 服務(wù) MongoClient mongoClient = new MongoClient("localhost", 27017); //連接到數(shù)據(jù)庫 MongoDatabase mongoDatabase = mongoClient.getDatabase("test"); //返回連接數(shù)據(jù)庫對(duì)象 return mongoDatabase; } //需要密碼認(rèn)證方式連接 public static MongoDatabase getConnect2(){ Listadds = new ArrayList<>(); //ServerAddress()兩個(gè)參數(shù)分別為 服務(wù)器地址 和 端口 ServerAddress serverAddress = new ServerAddress("localhost", 27017); adds.add(serverAddress); List credentials = new ArrayList<>(); //MongoCredential.createScramSha1Credential()三個(gè)參數(shù)分別為 用戶名 數(shù)據(jù)庫名稱 密碼 MongoCredential mongoCredential = MongoCredential.createScramSha1Credential("username", "databaseName", "password".toCharArray()); credentials.add(mongoCredential); //通過連接認(rèn)證獲取MongoDB連接 MongoClient mongoClient = new MongoClient(adds, credentials); //連接到數(shù)據(jù)庫 MongoDatabase mongoDatabase = mongoClient.getDatabase("test"); //返回連接數(shù)據(jù)庫對(duì)象 return mongoDatabase; } }
mongoDB中的數(shù)據(jù)都是通過文檔(對(duì)應(yīng)于關(guān)系型數(shù)據(jù)庫表中的一行)保存的,而文檔又保存在集合(對(duì)應(yīng)于關(guān)系型數(shù)據(jù)庫的表)中。
要對(duì)數(shù)據(jù)進(jìn)行CRUD操作首先要獲取到操作的集合。
//獲取集合 MongoCollectioncollection = MongoDBUtil.getConnect().getCollection("user");
這里的 "user" 表示集合的名字,如果指定的集合不存在,mongoDB將會(huì)在你第一次插入文檔時(shí)創(chuàng)建集合。
要插入文檔首先需要?jiǎng)?chuàng)建文檔對(duì)象
//創(chuàng)建文檔 Document document = new Document("name","張三") .append("sex", "男") .append("age", 18);
插入一個(gè)文檔,使用 MongoCollection 對(duì)象的 insertOne()
方法,該方法接收一個(gè) Document 對(duì)象作為要插入的數(shù)據(jù)
//插入一個(gè)文檔 @Test public void insertOneTest(){ //獲取數(shù)據(jù)庫連接對(duì)象 MongoDatabase mongoDatabase = MongoDBUtil.getConnect(); //獲取集合 MongoCollectioncollection = 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ù)庫連接對(duì)象 MongoDatabase mongoDatabase = MongoDBUtil.getConnect(); //獲取集合 MongoCollectioncollection = mongoDatabase.getCollection("user"); //要插入的數(shù)據(jù) List 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); }
刪除與篩選器匹配的單個(gè)文檔,使用 MongoCollection 對(duì)象的 deleteOne()
方法,該方法接收一個(gè)數(shù)據(jù)類型為 Bson 的的對(duì)象作為過濾器篩選出需要?jiǎng)h除的文檔。然后刪除第一個(gè)。為了便于創(chuàng)建過濾器對(duì)象,JDBC驅(qū)動(dòng)程序提供了 Filters 類。
//刪除與篩選器匹配的單個(gè)文檔 @Test public void deleteOneTest(){ //獲取數(shù)據(jù)庫連接對(duì)象 MongoDatabase mongoDatabase = MongoDBUtil.getConnect(); //獲取集合 MongoCollectioncollection = mongoDatabase.getCollection("user"); //申明刪除條件 Bson filter = Filters.eq("age",18); //刪除與篩選器匹配的單個(gè)文檔 collection.deleteOne(filter); }
刪除與篩選器匹配的所有文檔,使用 MongoCollection 對(duì)象的 deleteMany()
方法,該方法接收一個(gè)數(shù)據(jù)類型為 Bson 的的對(duì)象作為過濾器篩選出需要?jiǎng)h除的文檔。然后刪除所有篩選出的文檔。
//刪除與篩選器匹配的所有文檔 @Test public void deleteManyTest(){ //獲取數(shù)據(jù)庫連接對(duì)象 MongoDatabase mongoDatabase = MongoDBUtil.getConnect(); //獲取集合 MongoCollectioncollection = mongoDatabase.getCollection("user"); //申明刪除條件 Bson filter = Filters.eq("age",18); //刪除與篩選器匹配的所有文檔 collection.deleteMany(filter); }
修改單個(gè)文檔,使用 MongoCollection 對(duì)象的 updateOne()
方法,該方法接收兩個(gè)參數(shù),第一個(gè)數(shù)據(jù)類型為 Bson 的過濾器篩選出需要修改的文檔,第二個(gè)參數(shù)數(shù)據(jù)類型為 Bson 指定如何修改篩選出的文檔。然后修改過濾器篩選出的第一個(gè)文檔。
//修改單個(gè)文檔 @Test public void updateOneTest(){ //獲取數(shù)據(jù)庫連接對(duì)象 MongoDatabase mongoDatabase = MongoDBUtil.getConnect(); //獲取集合 MongoCollectioncollection = mongoDatabase.getCollection("user"); //修改過濾器 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 的過濾器篩選出需要修改的文檔,第二個(gè)參數(shù)數(shù)據(jù)類型為 Bson 指定如何修改篩選出的文檔。然后修改過濾器篩選出的所有文檔。
//修改多個(gè)文檔 @Test public void updateManyTest(){ //獲取數(shù)據(jù)庫連接對(duì)象 MongoDatabase mongoDatabase = MongoDBUtil.getConnect(); //獲取集合 MongoCollectioncollection = mongoDatabase.getCollection("user"); //修改過濾器 Bson filter = Filters.eq("name", "張三"); //指定修改的更新文檔 Document document = new Document("$set", new Document("age", 100)); //修改多個(gè)文檔 collection.updateMany(filter, document); }
使用 MongoCollection 對(duì)象的 find()
方法,該方法有多個(gè)重載方法,可以使用不帶參數(shù)的 find()
方法查詢集合中的所有文檔,也可以通過傳遞一個(gè) Bson 類型的 過濾器查詢符合條件的文檔。這幾個(gè)重載方法均返回一個(gè) FindIterable 類型的對(duì)象,可通過該對(duì)象遍歷出查詢到的所有文檔。
查找集合中的所有文檔
//查找集合中的所有文檔 @Test public void findTest(){ //獲取數(shù)據(jù)庫連接對(duì)象 MongoDatabase mongoDatabase = MongoDBUtil.getConnect(); //獲取集合 MongoCollectioncollection = mongoDatabase.getCollection("user"); //查找集合中的所有文檔 FindIterable findIterable = collection.find(); MongoCursor cursor = findIterable.iterator(); while (cursor.hasNext()) { System.out.println(cursor.next()); } }
指定查詢過濾器查詢
//指定查詢過濾器查詢 @Test public void FilterfindTest(){ //獲取數(shù)據(jù)庫連接對(duì)象 MongoDatabase mongoDatabase = MongoDBUtil.getConnect(); //獲取集合 MongoCollectioncollection = 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()
方法取出查詢到的第一個(gè)文檔
//取出查詢到的第一個(gè)文檔 @Test public void findTest(){ //獲取數(shù)據(jù)庫連接對(duì)象 MongoDatabase mongoDatabase = MongoDBUtil.getConnect(); //獲取集合 MongoCollectioncollection = mongoDatabase.getCollection("user"); //查找集合中的所有文檔 FindIterable findIterable = collection.find(); //取出查詢到的第一個(gè)文檔 Document document = (Document) findIterable.first(); //打印輸出 System.out.println(document); }
Java的特點(diǎn)有哪些 1.Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,實(shí)現(xiàn)了面向?qū)ο罄碚摚试S程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程。 2.Java具有簡單性、面向?qū)ο?、分布式、安全性、平臺(tái)獨(dú)立與可移植性、動(dòng)態(tài)性等特點(diǎn)。 3.使用Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。
關(guān)于使用java怎么連接mongoDB并進(jìn)行增刪改查操作就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。