1. 程式人生 > 其它 >IDEA連結MongoDB資料庫-實現增刪改查

IDEA連結MongoDB資料庫-實現增刪改查

中間出了一系列莫名其妙的問題,又莫名其妙地好了。

這是我的配置檔案,有點亂:

<?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();

    }
}