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

    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM