IDEA連結MongoDB資料庫-實現增刪改查
阿新 • • 發佈:2021-11-04
中間出了一系列莫名其妙的問題,又莫名其妙地好了。
這是我的配置檔案,有點亂:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.6</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.ya</groupId> <artifactId>oeder-logistics-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>oeder-logistics-demo</name> <description>Demo project for Spring Boot</description> <properties><java.version>11</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.0.2.RELEASE</version> </dependency> <!--spring data mongodb--> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>2.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.jetbrains</groupId> <artifactId>annotations</artifactId> <version>RELEASE</version> <scope>compile</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>
還導了兩個包:
連線資料庫:
package com.ya; import com.mongodb.*; import com.mongodb.MongoClient; import com.mongodb.client.*; import org.bson.Document; import java.util.ArrayList; import java.util.List; public class MongoDBConnection { //不認證直接連結資料庫 public MongoClient getConn(){ MongoClient mongoClient = new MongoClient("localhost",27017); //也可使用MongoClientURI // MongoClientURI mongoClientURI = new MongoClientURI("mongodb://localhost:27017"); // MongoClient mongoClient = new MongoClient(mongoClientURI); return mongoClient; } //通過使用者密碼認證連結資料庫 public MongoClient getConnByCredit(){ String name = "test";//使用者名稱 String dbName = "Test";//資料庫名 char [] pwd = "test".toCharArray();//使用者密碼(將字串轉換成字元陣列) List<ServerAddress> addresses = new ArrayList<>(); //伺服器地址:連結地址,埠號 ServerAddress address = new ServerAddress("localhost",27017); addresses.add(address); List<MongoCredential> credentials = new ArrayList<>(); //認證方法需要三個引數,使用者名稱,資料庫名,使用者密碼 MongoCredential credential = MongoCredential.createScramSha1Credential(name,dbName,pwd); credentials.add(credential); //建立連結物件 MongoClient mongoClient = new MongoClient(addresses,credentials); return mongoClient; } //測試是否連線成功 public static void main(String[] args) { MongoDBConnection mongoDBConnection = new MongoDBConnection(); MongoDatabase mongoDatabase = null; //MongoClient mongoClient = mongoDBConnection.getConn(); MongoClient mongoClient = mongoDBConnection.getConnByCredit(); // 查詢所有資料庫名稱 MongoIterable<String> dbNameList = mongoClient.listDatabaseNames(); System.out.println("查詢所有資料庫名稱:"); for(String dbName : dbNameList) System.out.println(dbName); //建立資料庫物件 mongoDatabase = mongoClient.getDatabase("Test"); //查詢Test資料庫中所有集合名稱 MongoIterable<String> colNameList = mongoDatabase.listCollectionNames(); System.out.println("查詢Test資料庫中所有集合名稱:"); for(String colName: colNameList) System.out.println(colName); //關閉連線 mongoClient.close(); } }
結果:
增刪改查:
package com.ya; import com.mongodb.MongoClient; import com.mongodb.MongoException; import com.mongodb.client.*; import com.mongodb.client.model.Filters; import org.bson.Document; import java.util.ArrayList; import java.util.List; public class MongoTest { //查詢指定資料庫中所有集合 public void selectCollection(MongoDatabase database) { try { //查詢Test資料庫中所有集合名稱 MongoIterable<String> colNameList = database.listCollectionNames(); for (String colName : colNameList) System.out.println(colName); System.out.println("[INFO] : Select collection success!"); } catch (MongoException e) { e.printStackTrace(); System.out.println("[ERROR] : Select collection field!"); } } //新建集合 public void createCollection(MongoDatabase database){ try{ //建立新集合 database.createCollection("testCol"); System.out.println("[INFO] : Create collection success!"); }catch(MongoException e){ e.printStackTrace(); System.out.println("[ERROR] : Create collection field!"); } } //刪除集合 public void deleteCollection(MongoDatabase database){ try{ //刪除集合 MongoCollection mongoCollection = database.getCollection("testCol"); mongoCollection.drop(); System.out.println("[INFO] : Drop collection success!"); }catch(MongoException e){ e.printStackTrace(); System.out.println("[ERROR] : Drop collection field!"); } } //查詢文件資料 public void selectData(MongoDatabase database){ try{ //獲取資料庫中的user集合 MongoCollection<Document> collection = database.getCollection("user"); //獲取user集合中的文件 FindIterable<org.bson.Document> iterable = collection.find(); //通過迭代器遍歷找到的文件中的資訊 MongoCursor<org.bson.Document> iterator = iterable.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next().toJson()); } System.out.println("[INFO] : Select data success!"); }catch(MongoException e){ e.printStackTrace(); System.out.println("[ERROR] : Select data field!"); } } //插入資料 public void insertData(MongoDatabase database){ try { MongoCollection mongoCollection = database.getCollection("user"); //一次插入一條資料 Document document = new Document("user_id","4") .append("user_name","test") .append("user_pwd","test"); mongoCollection.insertOne(document); //一次插入多條資料 Document document1 = new Document("user_id","5") .append("user_name","test") .append("user_pwd","test1"); Document document2 = new Document("user_id","6") .append("user_name","test") .append("user_pwd","test2"); List<Document> documents = new ArrayList<>(); documents.add(document1); documents.add(document2); mongoCollection.insertMany(documents); System.out.println("[INFO] : Insert data success!"); }catch(MongoException e){ e.printStackTrace(); System.out.println("[ERROR] : Insert data field!"); } } //修改資料 public void updateData(MongoDatabase database){ try { MongoCollection mongoCollection = database.getCollection("user"); //修改滿足條件的第一條資料 mongoCollection.updateOne(Filters.eq("user_name","test"),new Document("$set",new Document("user_pwd","tttt"))); //修改滿足條件的所有資料 mongoCollection.updateMany(Filters.eq("user_name","test"),new Document("$set",new Document("user_pwd","tttt"))); System.out.println("[INFO] : Update data success!"); }catch(MongoException e){ e.printStackTrace(); System.out.println("[ERROR] : Update data field!"); } } //刪除資料 public void deleteData(MongoDatabase database){ try { MongoCollection mongoCollection = database.getCollection("user"); //刪除滿足條件的第一條記錄 mongoCollection.deleteOne(Filters.eq("user_name","test")); //刪除滿足條件的所有資料 mongoCollection.deleteMany(Filters.eq("user_name","test")); System.out.println("[INFO] : Delete data success!"); }catch(MongoException e){ e.printStackTrace(); System.out.println("[ERROR] : Delete data field!"); } } public static void main(String args[]){ MongoTest mongoTest =new MongoTest(); MongoDBConnection mongoDBConnection = new MongoDBConnection(); //新建連結 MongoClient mongoClient = mongoDBConnection.getConn(); //建立資料庫物件 MongoDatabase mongoDatabase = mongoClient.getDatabase("Test"); //在Test裡新建集合 //mongoTest.createCollection(mongoDatabase); //刪除集合 //mongoTest.deleteCollection(mongoDatabase); //查詢Test資料庫中所有集合名稱 mongoTest.selectCollection(mongoDatabase); //插入資料 //mongoTest.insertData(mongoDatabase); //修改資料 //mongoTest.updateData(mongoDatabase); //刪除資料 //mongoTest.deleteData(mongoDatabase); //查詢資料文件 //mongoTest.selectData(mongoDatabase); //關閉連線 mongoClient.close(); } }