Java连接MongoDB两个注解齐全的类全搞定

Java 连接 MongoDB

本文环境:JDK 13、MongoDB 4.2

话不多说,直接干

创建环境

创建Java Maven项目,然后导入下面的依赖架包,MongoDB的驱动就一个架包

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver</artifactId>
    <version>3.12.0</version>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

连接类

连接类用于获取MongoDB的连接,如果需要使用到账号密码,请选择连接类中的getMongodbUserConnection方法。

import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoDatabase;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Mokerson_For_TGZ
 * Created by Mokerson_For_TGZ on 2020/1/22 2:45
 */
public class MongodbUtils {
    /**
     *  不需要账号密码验证,直接登录
     * @return  返回MongoDatabase连接
     */
    public static MongoDatabase getMongodbConnection() {
        MongoDatabase mongoDatabase = null;
        try {
            // 连接到 mongodb 服务
            MongoClient mongoClient = new MongoClient("localhost", 27017);

            // 连接到数据库
            mongoDatabase = mongoClient.getDatabase("mokerson");
            System.out.println("Connect to database successfully");

        } catch (Exception e) {
            System.err.println(e.getClass().getName() + ": " + e.getMessage());
        }
        return mongoDatabase;
    }

    /**
     * 需要账号密码进行连接
     * @return  返回MongoDatabase连接
     */
    public static MongoDatabase getMongodbUserConnection() {
        MongoDatabase mongoDatabase = null;
        try {
            //连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址
            //ServerAddress()两个参数分别为 服务器地址 和 端口
            ServerAddress serverAddress = new ServerAddress("localhost", 27017);
            List<ServerAddress> address = new ArrayList<>();
            address.add(serverAddress);

            //MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
            MongoCredential credential = MongoCredential.createScramSha1Credential
                    ("username", "databaseName", "password".toCharArray());
            List<MongoCredential> credentials = new ArrayList<>();
            credentials.add(credential);

            //通过连接认证获取MongoDB连接
            MongoClient mongoClient =new MongoClient(address,credentials);

            //连接到数据库
            mongoDatabase = mongoClient.getDatabase("mokerson");
            System.out.println("Connect to database successfully");
        } catch (Exception e) {
            System.err.println(e.getClass().getName() + ": " + e.getMessage());
        }
        return mongoDatabase;
    }
}

操作类

对MongoDB中的集合与文档进行操作

import com.mokerson.mongodb.util.MongodbUtils;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import org.bson.Document;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Mokerson_For_TGZ
 * Created by Mokerson_For_TGZ on 2020/1/22 3:16
 */
public class MongodbOperation {
    /**
     * 获取连接
     */
    private static MongoDatabase mongoDatabase;
    /**
     * 创建并且选择集合Department
     */
    private static MongoCollection<Document> collection;

    static{
        mongoDatabase = MongodbUtils.getMongodbConnection();
    }

    /**
     * 文档创建并且插入
     * @param collectionName 需要插入集合的名字
     */
    public static void insertDocument(String collectionName){

        //插入文档
        // 1. 创建文档 org.bson.Document 参数为key-value的格式
        // 2. 创建文档集合List<Document>
        // 3. 将文档集合插入数据库集合中 mongoCollection.insertMany(List<Document>)
        chooseCollection(collectionName);

        Document document = new Document("title", "MongoDB").
                append("description", "database").
                append("likes", 100).
                append("by", "Mokerson");
        List<Document> documents = new ArrayList<>();

        // 将文档添加到集合中
        documents.add(document);

        // 插入所有的文档
        // 插入单个文档可以用 mongoCollection.insertOne(Document)
        collection.insertMany(documents);
    }

    /**
     * 打印给定集合中所有的数据集
     * @param collectionName    集合的名字
     */
    public static void getAllDocument(String collectionName){
        //检索所有文档
        /*
         * 1. 获取迭代器FindIterable<Document>
         * 2. 获取游标MongoCursor<Document>
         * 3. 通过游标遍历检索出的文档集合
         */
        chooseCollection(collectionName);
        // 查询当前集合下所有的记录
        FindIterable<Document> findIterable = collection.find();
        for (Document document : findIterable) {
            System.out.println(document);
        }
    }

    /**
     * 更新指定集合中文档内容
     * @param collectionName    集合的名字
     */
    public static void updateDocument(String collectionName){
        chooseCollection(collectionName);

        // 更新文档
        // 将文档中的所有likes=100的文档,修改为likes=200
        collection.updateMany(Filters.eq("likes", 100), new Document("$set",new Document("likes",200)));
        // 更新后查看内容
        MongodbOperation.getAllDocument(collectionName);
    }

    public static void deleteDocument(String collectionName){
        chooseCollection(collectionName);

        //删除符合条件的第一个文档
        collection.deleteOne(Filters.eq("likes", 200));
        //删除所有符合条件的文档
        collection.deleteMany (Filters.eq("likes", 200));

        // 删除后查看结果
        MongodbOperation.getAllDocument(collectionName);
    }

    /**
     * 获取集合
     * @param collectionName 集合的名字
     */
    private static void chooseCollection(String collectionName) {
        // 集合选择
         collection = mongoDatabase.getCollection(collectionName);
    }

    /**
     * 创建集合
     * @param collectionName    集合的名字
     */
    public static void createCollection(String collectionName) {
        // 集合创建
        mongoDatabase.createCollection(collectionName);
    }
}

测试类

用于测试之前的代码是否正确

import com.mokerson.mongodb.conllection.MongodbOperation;
import org.junit.Test;

/**
 * @author Mokerson_For_TGZ
 * Created by Mokerson_For_TGZ on 2020/1/22 3:34
 */
public class MongodbTest {

    @Test
    public void testMongodb(){
        // 创建集合
        MongodbOperation.createCollection("university");
        // 插入文档
        MongodbOperation.insertDocument("university");
        // 修改文档
        MongodbOperation.updateDocument("university");
        // 删除文档
        MongodbOperation.deleteDocument("university");
    }

}

最后直接运行得到下图

发布了27 篇原创文章 · 获赞 2 · 访问量 910

猜你喜欢

转载自blog.csdn.net/TanGuozheng_Java/article/details/104067349