今天扣丁學堂Java培訓老師給大家分享一篇關于java連接mongoDB并進行增刪改查操作,結合實例形式詳細分析了java環境下MongoDB擴展包的下載、安裝及操作MongoDB連接、增刪改查等相關操作技巧。

1、安裝MongoDBJDBC驅動程序
在java中使用mongoDB之前,首先需要擁有java連接mongoDB的第三方驅動包(jar包)
1)maven項目可通過在pom.xml中添加依賴
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.0.4</version> </dependency></dependencies>
2)非maven項目jar包下載地址:
2、連接數據庫
將mongoDBJDBC驅動加入到項目之后,就可以對mongoDB進行操作了。
1)不通過認證連接mongoDB服務
//連接到 mongodb 服務MongoClient mongoClient = new MongoClient("localhost", 27017);這里的"localhost"表示連接的服務器地址,27017為端口號。可以省略端口號不寫,系統將默認端口號為27017。如:
//連接到 mongodb 服務,默認端口號為27017MongoClient mongoClient = new MongoClient("localhost");也可以將服務器地址和端口號都省略,系統默認服務器地址為"localhost",端口號為27017。如:
//連接到 mongodb 服務,默認連接到localhost服務器,端口號為27017MongoClient mongoClient = new MongoClient();
2)通過認證連接mongoDB服務
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)連接到數據庫
//連接到數據庫MongoDatabase mongoDatabase = mongoClient.getDatabase("test");這里的"test"表示數據庫名,若指定的數據庫不存在,mongoDB將會在你第一次插入文檔時創建數據庫。
4)封裝成工具類
由于所有連接數據庫操作都需要執行這兩步操作,我們可以將這兩步操作封裝成工具類。
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操作首先要獲取到操作的集合。
//獲取集合MongoCollection<Document> collection = MongoDBUtil.getConnect().getCollection("user");這里的"user"表示集合的名字,如果指定的集合不存在,mongoDB將會在你第一次插入文檔時創建集合。
2)創建文檔
要插入文檔首先需要創建文檔對象
//創建文檔Document document = new Document("name","張三").append("sex", "男").append("age", 18);3)插入文檔
插入一個文檔,使用MongoCollection對象的insertOne()方法,該方法接收一個Document對象作為要插入的數據
//插入一個文檔@Testpublic 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對象作為要插入的數據
//插入多個文檔@Testpublic 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類。
//刪除與篩選器匹配的單個文檔@Testpublic void deleteOneTest(){ //獲取數據庫連接對象 MongoDatabase mongoDatabase = MongoDBUtil.getConnect(); //獲取集合 MongoCollection<Document> collection = mongoDatabase.getCollection("user"); //申明刪除條件 Bson filter = Filters.eq("age",18); //刪除與篩選器匹配的單個文檔 collection.deleteOne(filter);}刪除與篩選器匹配的所有文檔,使用MongoCollection對象的deleteMany()方法,該方法接收一個數據類型為Bson的的對象作為過濾器篩選出需要刪除的文檔。然后刪除所有篩選出的文檔。
//刪除與篩選器匹配的所有文檔@Testpublic 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指定如何修改篩選出的文檔。然后修改過濾器篩選出的第一個文檔。
//修改單個文檔@Testpublic 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指定如何修改篩選出的文檔。然后修改過濾器篩選出的所有文檔。
//修改多個文檔@Testpublic 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類型的對象,可通過該對象遍歷出查詢到的所有文檔。
查找集合中的所有文檔
//查找集合中的所有文檔@Testpublic 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()); }}指定查詢過濾器查詢
//指定查詢過濾器查詢@Testpublic 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()方法取出查詢到的第一個文檔
//取出查詢到的第一個文檔@Testpublic 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);}以上就是關于扣丁學堂java培訓之連接mongoDB并進行增刪改查操作實例詳解,想要學好Java開發小編給大家推薦口碑良好的扣丁學堂,扣丁學堂有專業老師制定的Java學習路線圖輔助學員學習,此外還有與時俱進的Java視頻教程供大家學習,想要學好Java開發技術的小伙伴快快行動吧。
手機瀏覽
全國
19974831731


